【问题标题】:SQL Server : query groupingSQL Server:查询分组
【发布时间】:2015-09-29 02:54:42
【问题描述】:

我在 SQL Server 中有一些查询。我有两张桌子

  1. keyword_text

  2. Keyword_relate

keyword_text 中的列:

  1. key_id
  2. 关键词

keyword_relate 中的列:

  1. key_id
  2. product_id
  3. 得分
  4. 状态

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 在第二个表中吗?

标签: sql sql-server group-by minimum


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多