【发布时间】:2016-01-01 01:33:18
【问题描述】:
我使用的是 PostgreSQL 数据库,并且有两个类似的表
服务员(id、姓名)
账单(id、金额、id_waiter)
我正在寻找每个服务员最大金额的账单 ID。
我找到了以下解决方案
SELECT waiter.id AS waiter, maxamount, bills.id AS bill
FROM waiter
JOIN (
SELECT id_waiter, max(amount) AS maxamount
FROM bills
GROUP BY id_waiter) AS maxis ON maxis.id_waiter = waiter.id
JOIN bills ON maxis.maxamount = bills.amount AND waiter.id = bills.id_kellner
它有效,但它似乎有点多余,我想知道是否有更好的方法来做到这一点。我不喜欢的是 bills 被连接了两次,一次在子查询中,一次在末尾。
这是一些示例数据
样本数据
服务员餐桌
id | name
1 | john
2 | joe
账单表
id | amount | id_waiter
1 | 20 | 1
2 | 25 | 2
3 | 50 | 2
4 | 20 | 1
5 | 60 | 1
6 | 10 | 2
结果如下所示
waiter | maxamount | bill
1 | 60 | 5
2 | 50 | 3
【问题讨论】:
-
样本数据会很好...
标签: postgresql max greatest-n-per-group