sql - 检索每组的第二高计数
问题描述
我有一张这样的桌子:
shopID supplier supply_count
1 a 12
1 b 10
1 c 8
1 d 7
2 b 12
2 f 12
2 e 10
3 b 5
3 a 2
4 f 15
4 c 11
我使用了 not in 函数,如下所示:
where supply_count NOT IN (select max(supply_count) from supply)
但是,只有第一行显示结果中的第二高值,其他行仍然显示最高计数:
shopID supply_count
1 10
2 12
3 5
4 15
我的预期结果是为每个商店找到第二高的供应数量,如下所示:
shopID supply_count
1 10
2 12
3 2
4 11
那么,有人有什么建议吗?谢谢!
解决方案
利用row_number()
select shopid,supply_count
from
(
select shopID,supply_count,row_number() over(partition by shopID order by supply_count) as rn
from tablename
)A where rn=2
推荐阅读
- jqassistant - jQAssistant 的 EJB3 插件是否应该创建手册中列出的概念?
- wordpress - WooCommerce:显示变化价格而不是 [产品] 短代码内的范围
- perl - fetchrow_hashref 是否返回默认值?
- javascript - 用文本 JavaScript 替换字符串中数组的内容
- python - Flask SQLAlchemy 和蓝图
- reactjs - 从与活动存储导轨 api 反应的图像上传
- reactjs - 需要将复选框更改为 Radio -React js
- python - 重排后的Printing_Alice的图书馆
- python - Locust 在暂时收到错误 500 后停止
- angularjs - 如何从凉亭组件转移到节点模块