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:查询分组的主要内容,如果未能解决你的问题,请参考以下文章

sql server分组查询

sql server 分组查询结合日期模糊查询

Sql Server - 查询帮助(按 MAX 分组)

SQL Server:查询分组

SQL Server 2012 查询 - 按 [重复] 分组

sql server模糊查询分组