[英]How to use MAX() and COUNT() in Oracle SQL?
假设我有下表:
交易(编号,类型)
id
-负荷消费(整数1 ... N)的ID
type
-他们买了什么(例如“苹果”)
请注意,每一行只代表购买给定类型的一个。
如何选择购买了给定类型(例如苹果)最多的顾客的ID?
我尝试对每个id进行COUNT()
其中类型= apple的行COUNT()
,但是无法在该查询中使用MAX()
仅选择第一个ID。
谢谢
您可以首先进行查询,以查询每个客户购买'apple'
的次数:
SELECT id,COUNT(*) AS total
FROM transactions
WHERE type = 'apple'
GROUP BY id
现在,我们只需DESC
结束顺序对该total
进行ORDER BY
,并返回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
这是SQL 101,您应该阅读有关group by
子句的信息:
select id,
count(*) as count_of_apples
from transactions
where type = 'apple'
group by id
order by count(*) desc
当您特别要求Oracle时: STATS_MODE
为您提供最常出现的值。
select stats_mode(id)
from transactions
where type = 'apple';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.