【发布时间】:2018-04-28 14:13:02
【问题描述】:
我正在使用 oracle sql 开发人员。我有两张桌子
交易:
╔════╤═══════╗
║ id │ value ║
╠════╪═══════╣
║ 1 │ 10 ║
╟────┼───────╢
║ 1 │ 20 ║
╟────┼───────╢
║ 2 │ 30 ║
╟────┼───────╢
║ 3 │ 40 ║
╚════╧═══════╝
和用户:
╔════╤═════════╤═════╗
║ id │ country │ sex ║
╠════╪═════════╪═════╣
║ 1 │ Germany │ m ║
╟────┼─────────┼─────╢
║ 2 │ Germany │ f ║
╟────┼─────────┼─────╢
║ 3 │ France │ m ║
╚════╧═════════╧═════╝
我想像这样为每个国家/地区获得最大值
╔════╤═════════╤═════╤══════════╗
║ id │ country │ sex │ maxvalue ║
╠════╪═════════╪═════╪══════════╣
║ 2 │ Germany │ f │ 30 ║
╟────┼─────────┼─────┼──────────╢
║ 3 │ France │ m │ 40 ║
╚════╧═════════╧═════╧══════════╝
我知道如何为每个用户获取最大值并加入表格
SELECT u.*, max
FROM users u
LEFT JOIN
(SELECT id, max(value) as max
FROM transactions
group by ID) t
on u.id = t.id;
我应该改变什么以获得每个国家的最大值?
【问题讨论】:
-
德国米在哪里?
-
如果事务表中 id = 1 的值为 20、30,那么预期的输出是什么?它会取代法国到德国吗?
-
应该同时显示
-
Id 1 的值也是 30 (10 + 20)。因此,id 1 和 id 2 的最大值是相同的。所以现在怎么办?为什么我们选择 2 或 1?
-
只有其中一个