【问题标题】:Select smallest values from rows with couple parameters从具有几个参数的行中选择最小值
【发布时间】:2016-11-15 20:12:59
【问题描述】:

我有SQL语句:

select col1,col2,col3,col4,col5 from table1
group by col1,col2,col3,col4

生成下表:

我想只显示行,相同参数的最小值。 结果应该如下:

怎么写?

更新:年、月

【问题讨论】:

  • group by col1,col2,col3,col4col1,col2,col3,col4 产生正好一行 行。你怎么会得到上面引用的结果?
  • 对不起我的错误,没有分组
  • 我认为你可以使用 HAVING Something like HAVING Col5 = MIN(Col5)

标签: sql-server sql-server-2008 select parameters sql-order-by


【解决方案1】:

请在下面尝试。

SELECT  Year
       ,Month
       ,COL1
       ,COL2
       ,COL3
       ,COL4
       ,COL5
FROM 
    (SELECT  Year
            ,Month
            ,COL1
            ,COL2
            ,COL3
            ,COL4
            ,COL5
            ,ROW_NUMBER() OVER(PARTITION BY COL4 ORDER BY COL5) AS RN
     FROM table1) AS X
WHERE X.RN = 1

【讨论】:

  • 如果还需要按 col: year, month 分组呢?
  • 请同时显示一些带有年份和月份的示例数据
  • 刚刚更新的问题:我想我需要添加到 row_number: col4,year,month,但我不确定...
  • 我的做法是:ROW_NUMBER() OVER(PARTITION BY COL4, Year, Month ORDER BY COL5) 并且正在工作!
【解决方案2】:

除非我遗漏了一些明显的东西,否则应该是这样的:

select col1, col2, col3, col4, min(col5)
from table1
group by col1, col2, col3, col4

【讨论】:

    【解决方案3】:

    将 MIN() 与 OVER 子句一起用于设置最小值的所有行:

    SELECT
        col1,
        col2,
        col3,
        col4,
        col5,
        min(col5) OVER (PARTITION BY col1, col2, col3, col4) AS min_for_columns_set
    FROM table1
    

    更新: 只有组集的最小值:

        SELECT
        col1,
        col2,
        col3,
        col4,
        min(col5) as min_value
    FROM table1
    group BY col1, col2, col3, col4
    

    【讨论】:

    • @ZoharPeled 确实如此。添加了带有 GROUP BY 字段集的明显变体
    • 您的第二个查询仍将返回表的所有行,但现在您将再次获得 col5,标题为 min_value ...
    • @ZoharPeled 我不小心将第五列添加到 group by 和 partition by,谢谢你提到它
    • 好的,在您编辑后,您的第二个查询将引发错误 - select 子句中的列必须出现在 group by 子句或聚合函数中 - 您将 col5 留在了选择列表中...: -)
    • @ZoharPeled 我今天完全不准确>_
    猜你喜欢
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 2015-06-15
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    相关资源
    最近更新 更多