sql - SQL group-n-result (count, max, group)
问题描述
使用 SQL (Redshift) 我试图计算,并返回组中每个项目的最大值。我尝试了许多示例,但没有一个产生我想要的输出。这是我所追求的一些示例数据和结果。
数据
Container,fruit
box1, apple
box1, apple
box1, apple
box1, apple
box1, banana
box2, blueberry
box2, blueberry
box2, strawberry
box3, apple
box3, apple
box3, blueberry
查询结果
Container, fruit, count
box1, apple, 4
box2, blueberry,2
box3, apple, 2
我一直在尝试一些示例,但几个小时都没有到达任何地方,因此非常感谢您的帮助。
解决方案
我们可以在这里使用窗口函数:
WITH cte AS (
SELECT Container, fruit, COUNT(*) AS cnt,
ROW_NUMBER() OVER (PARTITION BY Container
ORDER BY COUNT(*) DESC) rn
FROM yourTable
GROUP BY Container, fruit
)
SELECT Container, fruit, cnt
FROM cte
WHERE rn = 1;
这里的逻辑是按容器和GROUP BY
水果进行基本的聚合查询,以找到每个组的计数。在 CTE 中,一路上,我们还拿起了一个行号,这次只按容器分区,按计数降序排列。
推荐阅读
- javascript - 将活动选项卡事件传递给父组件和兄弟组件
- javascript - 在数组中添加输入值
- python - ModuleNotFoundError:没有名为“__main__.models”的模块
- sql - 如何连接没有公共字段的 2 个表?
- python-2.7 - 如何在 google colab 中安装网格
- javascript - 如何通过 JavaScript 在 HTML 表格中加减数字
- r - 将具有单个 |Date|Temperature_1|Temperature_2|Temperature_3|etc ..... 的数据框重塑为 |Date |Temperature| 形式
- okhttp3 - Okhttp解析和recyclerview片段?
- javascript - 将数据从 Angularjs 传递到 PHP
- c# - windows窗体通知图标无法正常工作