gpt4 book ai didi

sql - 对于每个类别(A 字段),我想要按计数排名前十的类型(另一个字段)

转载 作者:行者123 更新时间:2023-11-29 14:09:37 25 4
gpt4 key购买 nike

假设我有一个如下所示的表格:

+------------+-------------+-------+
| Category | Type | Count |
+------------+-------------+-------+
| Fruits | Apple | 13 |
| Vegetables | Carrot | 7 |
| Legumes | Kidney Bean | 1 |
| Fruits | Orange | 1 |
| Vegetables | Green | 3 |
| Legumes | Black Bean | 1 |
| Vegetables | Leek | 1 |
| Fruits | Banana | 1 |
| Legumes | Lentil | 1 |
| Fruits | Mango | 1 |
| Fruits | Pinapple | 18 |
| Fruits | Strawberry | 1 |
| Legumes | Flat Bean | 2 |
| Vegetables | Brocolli | 8 |
| Fruits | Rambotan | 1 |
| Fruits | Marang | 15 |
| Vegetables | Cauliflower | 5 |
| Vegetables | Aubergine | 1 |
+------------+-------------+-------+

对于每个类别,我想要按数量排名前十的类型。

鉴于所讨论的表实际上有数百万行,如果我简单地执行 select category, type, sum(Count) group by category, type order by category, type 那么我会得到结果该类型不在前十名中。

我正在使用 postgresql,但相信可能有更“通用”的 sql 方式来执行此操作。有吗?

最佳答案

select Category, Type, Count from (
select your_table.*, row_number() over(partition by Category order by Count desc) as rn
from your_table
) t
where rn <= 10

这为每个 Category 提供了 10 行(如果存在),其中 Count 列最高。

如果你想要前 10 个结果“有联系”,那么使用 rank() 函数而不是 row_number()

关于sql - 对于每个类别(A 字段),我想要按计数排名前十的类型(另一个字段),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44744423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com