SQL Server:查询分组
Posted
技术标签:
【中文标题】SQL Server:查询分组【英文标题】:SQL Server : query grouping 【发布时间】:2015-09-29 02:54:42 【问题描述】:我在 SQL Server 中有一些查询。我有两张桌子
keyword_text
Keyword_relate
keyword_text
中的列:
-
key_id
关键词
keyword_relate
中的列:
-
key_id
product_id
得分
状态
keyword_text
的示例数据:
----|----------
1 | Pencil
2 | Pen
3 | Books
keyword_relate
的示例数据:
----------------------------
Sno| Product | SCore|status
---------------------------
1 | 124 | 2 | 1
1 | 125 | 3 | 1
2 | 124 | 3 | 1
2 | 125 | 2 | 1
从这里我想得到product_id
,按关键字分组并且得分最高
【问题讨论】:
您的查询是什么样的? 第一个表的key_id
Sno
在第二个表中吗?
【参考方案1】:
假设第一个表的key_id
是第二个表的Sno
。你可以使用ROW_NUMBER
:
WITH CTE AS
(
SELECT Product AS ProductID, Score As MaxScore,
RN = ROW_NUMBER() OVER (PARTITION BY kt.key_id ORDER BY Score DESC)
FROM keyword_text kt INNER JOIN keyword_relate kr
ON kt.key_id = kr.Sno
)
SELECT ProductID, MaxScore
FROM CTE
WHERE RN = 1
【讨论】:
以上是关于SQL Server:查询分组的主要内容,如果未能解决你的问题,请参考以下文章