sql - 使用 IN 子句和 WHERE 条件查找多个 MAX 值
问题描述
给定一个简单的表格:
ColumnWhereIn ColumnWhere ColumnSearched
A 1234 1
A 1234 2
B 1234 3
B 1234 4
C 1234 5
C 1234 6
我想找到最大的ColumnSearched
价值。所以预期的结果是:
{A: 2, B: 4, C: 6}
我尝试了以下查询:
SELECT mt.ColumnSearched AS cs, mt.ColumnWhereIn AS cwi FROM MyTable mt
WHERE (mt.ColumnSearched, mt.ColumnWhereIn) IN
(SELECT MAX(ColumnSearched), ColumnWhereIn FROM MyTable
WHERE ColumnWhere = 1234
AND ColumnWhereIn IN ('A', 'B', 'C')
GROUP BY ColumnWhereIn)
但它没有返回任何记录。显然我可以像这样运行三个选择:
SELECT MAX(ColumnSearched) FROM MyTable
WHERE ColumnWhere = 1234 AND ColumnWhereIn = 'A'
但我想知道是否有更清洁的解决方案。
解决方案
只需添加ColumnWhereIn
到 SELECT 和 GROUP BY 子句:
SELECT ColumnWhereIn, MAX(ColumnSearched) AS MaxColumnSearched
FROM MyTable
WHERE ColumnWhere = 1234
GROUP BY ColumnWhereIn
推荐阅读
- python-3.x - Python提取zip文件避免垃圾路径
- android - Firebase 测试实验室使用移动数据运行测试
- javascript - 在 php 中使用 select 选项时使用数据库填充输入
- paypal - PayPal退款交易授权问题
- go - 如何检查 reflect.Value 是否为零?
- css - 如何为内联 svg 添加额外的外层空间?
- python - 在熊猫中对两个数据框进行分组并对匹配组执行操作的最佳方法
- javascript - Material-UI formControlLabel 整个标签是可点击的,只有文本应该是
- excel - IF ISNUMBER SEARCH - 区分相似文本
- java - 带有 JCheckBox 的 Swing TableHeader 在 Nimbus 中不起作用