查找 SQL 中某列出现的最高次数
给定此表:
订单
custName 描述 to_char(价格)
一个德萨$14
B 德斯布 $14
C 描述 $21
D desd 65 美元
E 德斯 $21
F 定义 $78
G 设计 $14
H desh $21
我试图显示价格出现次数最多的整行,在本例中为 $14 和 $21
我相信需要有一个子查询。所以我从这个开始:
select max(count(price))
from orders
group by price
这给了我 3。
一段时间后我认为这没有帮助。我相信我需要值 14 和 21 而不是计数,这样我就可以将其放在 where 子句中。但我不知道如何显示它。有什么帮助吗?
更新:所以我可以从中查询 14 和 21,
select price
from orders
group by price
having (count(price)) in
(select max(count(price))
from orders
group by price)
但我需要它来显示客户名称和描述列,我收到错误:
select custname, description, price
from orders
group by price
having (count(price)) in
(select max(count(price))
from orders
group by price)
SQL Error: ORA-00979: not a GROUP BY expression
对此有任何帮助吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我猜你已经很接近了。由于 HAVING 对 GROUPed 结果集进行操作,因此请尝试
或
替换当前行。
I guess you are pretty close. Since HAVING operates on the GROUPed result set, try
or
replacing your current line.
由于您将问题标记为 oracle,因此您可以使用 窗口函数在同一查询中获取聚合和详细数据。
Since you tagged the question as oracle, you can use windowing functions to get aggregate and detail data within the same query.
参考
Reference
你可以尝试像
我不确定Oracle中的限制结果,在SQL Server中是最高的,也许你应该使用限制。
You could try something like
I'm not sure of limiting results in Oracle, in SQL Server is top, maybe you should use limit.