我只是想了解如何对查询使用max和count。我有以下代码:
SELECT SERVICE, COUNT(*)
FROM SUBSCRIBERS INNER JOIN SERVICE_SUBSCRIBERS ON
SERVICE_SUBSCRIBERS.LINE=SUBSCRIBERS.PORTID
GROUP BY SERVICE;
哪个输出:
3WC|12
CFB|17
CWT|20
DSP|16
MSG|25
但是我只想输出最大值(MSG | 25)。我也想知道如何根据特定条件(> 15)输出。我只是不确定如何同时使用函数count和max。
答案 0 :(得分:1)
您无需在此处使用max
-您只需限制返回的行数并使用order by
。
取决于使用的语法的rdbms,可能非常相似,但是思路仍然相同:
对于SQL Server,MS Access和其他一些数据库,请使用TOP
:
SELECT TOP 1 SERVICE, COUNT(*)
FROM SUBSCRIBERS
INNER JOIN SERVICE_SUBSCRIBERS
ON SERVICE_SUBSCRIBERS.LINE=SUBSCRIBERS.PORTID
GROUP BY SERVICE
ORDER BY COUNT(*);
对于Oracle,请使用offset...fetch next
(也适用于从2012版开始的sql server)
SELECT SERVICE, COUNT(*)
FROM SUBSCRIBERS
INNER JOIN SERVICE_SUBSCRIBERS
ON SERVICE_SUBSCRIBERS.LINE=SUBSCRIBERS.PORTID
GROUP BY SERVICE
ORDER BY COUNT(*)
OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY;
对于MySql,请使用Limit
:
SELECT SERVICE, COUNT(*)
FROM SUBSCRIBERS
INNER JOIN SERVICE_SUBSCRIBERS
ON SERVICE_SUBSCRIBERS.LINE=SUBSCRIBERS.PORTID
GROUP BY SERVICE
ORDER BY COUNT(*)
LIMIT(1)
答案 1 :(得分:0)
取决于您的特定数据库供应商,您也许可以这样做:
product_id