假设我有下表:
交易(id,type)
id
- 客户的ID(整数1 ... n)
type
- 他们是什么 买了(像" apple")
请注意,每行仅指购买给定类型中的一个。
如何选择购买了大部分特定类型(如苹果)的客户的ID?
我尝试COUNT()
每个id的type = apple的行,但我不能在该查询中使用MAX()
来仅选择第一个ID。
谢谢
答案 0 :(得分:1)
您可以首先查询每个客户计算他购买'apple'
的次数,并使用:
SELECT id,COUNT(*) AS total
FROM transactions
WHERE type = 'apple'
GROUP BY id
现在我们只需要ORDER BY
total
DESC
结束顺序,并返回first row with FETCH FIRST n ROWS ONLY
,如:
SELECT id,COUNT(*) AS total
FROM transactions
WHERE type = 'apple'
GROUP BY id
ORDER BY total DESC
FETCH FIRST 1 ROWS ONLY
答案 1 :(得分:0)
这是SQL 101,您应该阅读{{1}}子句:
{{1}}
答案 2 :(得分:0)
正如您特别要求Oracle:STATS_MODE
为您提供最常出现的值。
select stats_mode(id)
from transactions
where type = 'apple';