我想形成一个sql查询,它返回一些行的数据,这些行在某个组中具有最大值。请考虑以下示例进行演示:
有三张桌子:国家,出版商和图书。每个出版商属于一个国家,每本书有一个出版商。定义可能看起来像
Country(country_id, country_name)
Publisher(pub_id, pub_name, fk_pub_country)
Book(book_id, book_name, release_date, fk_book_publisher)
我想选择(country_I d,book_name)按国家分组,这样每一行都包含该国家最近发行的图书的名称。如果有多本书在同一天发行,我应该得到一个最高的id。
如果我只使用GROUPBY子句和max,就不能包含图书名。如果我选择查看(国家/地区id,最大日期)并将其与publisher和book合并,则每个国家/地区可能会收到多行。我怎样才能达到预期的效果?
最佳答案
SELECT DISTINCT ON (country_id)
country_id,
book_name
FROM country
JOIN publisher ON fk_pub_country = country_id
JOIN book ON fk_book_publisher = pub_id
ORDER BY
country_id,
release_date DESC,
book_id DESC
关于sql - PostgreSQL-获取列中具有最大值的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42271526/