代码之家  ›  专栏  ›  技术社区  ›  QWERTY

按最大日期分组的SQL查询

  •  0
  • QWERTY  · 技术社区  · 7 年前

    我正试图编写一个SQL查询来为每种类型做类似的事情,找到日期最大的记录。我的样本数据:

    date             type
    1505246220000    RNase P
    1445652540000    Dye Plate 3
    1505246940000    Dye Plate 1
    1530529380000    ROI
    1505246220000    ROI
    1445651640000    ROI
    1382579640000    ROI
    1532830140000    Dye Plate 4
    

    如您所见,对于“ROI”类型,它包含多行。为此,我想得到最大的约会对象。我当前的SQL查询只是简单地选择所有内容:

    SELECT * FROM calibration_history ORDER BY calibration_date DESC 
    

    有什么想法吗?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Thorsten Kettner    7 年前

    这叫做聚合。您不希望“按最大日期分组”,而是按类型分组(即,您希望每种类型有一个结果行),您希望每种类型都有最大日期:

    SELECT max(calibration_date), type
    FROM calibration_history
    GROUP BY type
    ORDER BY max(calibration_date) DESC;
    

    (我不知道这是否是你想要的订单,或者这是否是你想要的最大日期。当然可以 ORDER BY type 例如。)

        2
  •  0
  •   Yogesh Sharma    7 年前

    我会用 相关的 subquery :

    select ch.*
    from calibration_history ch
    where calibration_date = (select max(ch1.calibration_date) 
                              from calibration_history ch1
                              where ch1.type = ch.type
                             );