【问题标题】:SQL - Find greatest countSQL - 查找最大计数
【发布时间】:2021-02-22 01:48:16
【问题描述】:

只是一个快速的 SQL 问题。我一直在研究一个问题,希望找到保留最多红船的水手。架构如下所示:

我知道对于每艘红船,您可以找到预订它的水手人数

SELECT B.bid, COUNT (*) AS sailorcount 

FROM Boats B, Reserves R

WHERE R.bid = B.bid AND B.color = ‘red’

GROUP BY B.bid

所以现在我想弄清楚如何才能确定哪个水手预订了最多的红船。感谢任何人的见解!

【问题讨论】:

  • 您使用的是哪个 DBMS?

标签: sql


【解决方案1】:

您需要将所有表连接在一起。在这里,因为Boats 是在其唯一的 PK 上连接的,所以它不会复制以前连接中的任何行,它只会限制现有的行。所以直接COUNT(*) 有效

不要使用, 连接语法,它已经被弃用多年了。

SELECT TOP (1)    -- for SQL Server, Sybase
    S.sid, S.sname, COUNT(*) AS RedBoats
FROM Sailors S
JOIN Reserves R ON R.sid = S.sid
JOIN Boats B ON R.bid = B.bid AND B.color = 'red'
GROUP BY S.sid, S.sname
ORDER BY COUNT(*) DESC
-- LIMIT 1    -- for MySQL, MariaDB, Postgres

【讨论】:

  • 啊,我现在明白了。数学家在这里,所以我只是沉浸在 SQL 中。我只是使用直接的 SQL,所以这只适用于 MySQL、Postgres 等吗?
  • “直接 SQL”是什么意思?任何允许您限制行的 SQL 变体都可以使用这些语法之一来完成。这涵盖了市场上几乎所有主要的 DBMS
  • 对不起,只是普通的普通 SQL,所以我相信 SELECT TOP (1) 应该可以工作。谢谢你的澄清!
  • 没有“plain vanilla SQL”之类的东西,您使用的是哪个提供程序?您是指 Microsoft SQL Server 吗?
  • 是的,SQL Server。
猜你喜欢
  • 2020-09-12
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
  • 1970-01-01
  • 1970-01-01
  • 2017-06-30
  • 1970-01-01
相关资源
最近更新 更多