sql-server - TSQL - 选择计数较高的行,当计数相同时,选择 id 值较高的行

标签 sql-server t-sql greatest-n-per-group

救命!!!我很困惑,尝试了多种选择,但都无济于事...... 我需要为每个 Pub_id 返回一行,返回的行应该是 Count 较高的那一行,当有不止一行具有最高计数的行时,我需要 Price_id 较高的那一行。

我已经用这些数据填充了一个表...

pub_id, price_id,   count
7,  59431,            5
22, 39964,            4
39, 112831,           3
39, 120715,           2
47, 95359,            2
74, 142825,           5
74, 106688,           5
74, 37514,            1

这就是我需要返回的...

pub_id, price_id,   count
7,  59431,            5
22, 39964,            4
39, 112831,           3
47, 95359,            2
74, 142825,           5

最佳答案

;WITH T
     AS (SELECT *,
                ROW_NUMBER() OVER (PARTITION BY pub_id 
                               ORDER BY [count] DESC, price_id DESC) AS rn
         FROM   your_table)
SELECT pub_id,
       [count],
       price_id
FROM   T  
WHERE rn=1

关于sql-server - TSQL - 选择计数较高的行,当计数相同时,选择 id 值较高的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7405544/

相关文章:

c# - SqlDataReader 返回 x 行,但 SQL 查询返回 y 行

sql - 动态 SQL 传递表名并返回最大 ID 值

sql - 从动态行号创建动态列名称

postgresql - 在 JOIN 上从 SQL 中的第二个表获取最新结果

mysql - 在 MySQL 中按日期获取用户的最新记录

MySQL 使用 max 选择详细信息

sql-server - 在 CONTAINSTABLE 中找不到接近的匹配项

java - 通过 JTDS 驱动程序执行 SQL Server 调用时出现 "Invalid JDBC escape syntax at line position 24 ' =' character expected"错误的原因?

sql-server - 包含多个参数的存储过程where语句

sql-server - ALTER STATEMENT 中关键字 'SET' 附近的语法不正确