如何在Oracle SQL Developer中按国家查询最大交易值?
按国家统计最大交易值的SQL解决方案
没问题,这需求很清晰,我们可以通过关联两张表再分组聚合来实现,给你两种不同场景的解决方案:
场景1:保留用户信息,同时按所属国家统计该用户的最大交易值
适合需要看到每个用户对应最大交易的情况,SQL语句如下:
SELECT u.id, u.country, u.sex, MAX(t.value) AS max_transaction_value FROM users u JOIN transactions t ON u.id = t.id GROUP BY u.id, u.country, u.sex ORDER BY u.id;
执行后得到的结果:
| id | country | sex | max_transaction_value |
|---|---|---|---|
| 1 | Germany | m | 20 |
| 2 | Germany | f | 30 |
| 3 | France | m | 40 |
场景2:仅按国家维度统计,取整个国家的最大交易值
如果不需要用户明细,只看国家层面的最大值,可以用这段SQL:
SELECT u.country, MAX(t.value) AS max_transaction_value FROM users u JOIN transactions t ON u.id = t.id GROUP BY u.country ORDER BY u.country;
对应的结果:
| country | max_transaction_value |
|---|---|
| France | 40 |
| Germany | 30 |
补充说明
- 这里用
JOIN是默认的内连接,只会统计有交易记录的用户/国家;如果要包含没有交易的用户(哪怕值为null),可以换成LEFT JOIN MAX()函数会自动忽略null值,不用担心空交易的影响
内容的提问来源于stack exchange,提问作者riloth
相关产品推荐
相关产品推荐

