【问题标题】:SELECT MAX in SQL在 SQL 中选择 MAX
【发布时间】:2020-06-07 11:57:01
【问题描述】:

我有一个表 1,其中包含有关图书馆书籍的信息(ID、姓名、出版商、year_of_public、状态)

我需要为每个发布者获取所有 PUBLISHERS 和 last YEAR OF PUBLISH。 我做过这样的事情:

SELECT publisher, year_of_public FROM table 

SELECT MAX (year_of_public) FROM publisher  

但我确定这是不对的。如何让它变得更好?

【问题讨论】:

  • 提示:GROUP BY.

标签: sql select max


【解决方案1】:

要获得每个发布者的最大 year_of_public,您必须添加一个 group by 子句:

SELECT publisher, MAX(year_of_public) AS last_year_of_publish 
FROM publisher 
GROUP BY publisher;

【讨论】:

    【解决方案2】:

    我需要为每个发布者获取所有 PUBLISHERS 和 last YEAR OF PUBLISH

    假设您想要完整的行,那么您可以使用相关子查询:

    select p.*
    from publisher p
    where p.year_of_public = (select max(p1.year_of_public) from publisher p1 where p1.publisher = p.publisher);
    

    大部分数据库都支持窗口功能,那么你可以使用row_number()

    select p.*
    from (select p.*, row_number() over (partition by publisher order by year_of_public desc) as seq
          from publisher p
         ) p
    where p.seq = 1;
    

    【讨论】:

      猜你喜欢
      • 2021-09-11
      • 2019-01-31
      • 2013-10-11
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      • 2016-09-27
      相关资源
      最近更新 更多