如何从2个表中获取count(*)的最大值

问题描述 投票:0回答:1

我有两张桌子。 1 个类别和 1 个业务。我一直在努力学习如何有选择地获得每个州类别中最高的业务数量。

expected results

提前感谢您的帮助:D.

sql join count max
1个回答
0
投票

这是 SQL-Server 的一个可能的解决方案:

SELECT bstate, ccat, cnt FROM (
 SELECT b.state bstate, c.category ccat, count(*) cnt, 
 ROW_NUMBER() OVER(PARTITION BY b.state ORDER BY count(*) DESC) rn 
 FROM business b INNER JOIN category c ON b.id=c.business_id
 GROUP BY c.category, b.state
) tbl 
WHERE rn = 1
ORDER BY bstate, cnt desc

窗口函数

ROW_NUMBER()
为每个记录分配一个唯一的排名,应用此任务的
PARTITION
块的
ORDER
OVER(...)
规范。

外部

SELECT
只需要过滤带有
rn=1
的记录即可排除所有其他记录。

© www.soinside.com 2019 - 2024. All rights reserved.