如何在Oracle SQL中使用MAX()和COUNT()?

时间:2017-03-30 15:00:54

标签: sql oracle

假设我有下表:

  

交易(id,type)

     

id - 客户的ID(整数1 ... n)
type - 他们是什么   买了(像" apple")

请注意,每行仅指购买给定类型中的一个。

如何选择购买了大部分特定类型(如苹果)的客户的ID?

我尝试COUNT()每个id的type = apple的行,但我不能在该查询中使用MAX()来仅选择第一个ID。

谢谢

3 个答案:

答案 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';