sql - 如何根据SQL中其他列的值选择值更大的行
问题描述
假设您有下表:
ID | 日期 | 地区 | 案例 |
---|---|---|---|
1 | 2013-06-01 | 数控 | 3 |
2 | 2013-06-01 | 不适用 | 5 |
3 | 2013-06-02 | 数控 | 7 |
4 | 2013-06-02 | 不适用 | 2 |
仅当给定日期的 NC 病例大于 NA 病例时,我才想选择(日期、地区、病例)。例如,第 3 行和第 4 行满足此条件。
期望的输出:
ID | 日期 | 地区 | 案例 |
---|---|---|---|
3 | 2013-06-02 | 数控 | 7 |
4 | 2013-06-02 | 不适用 | 2 |
解决方案
您可以Date
通过条件聚合获得满足您条件的 s:
SELECT Date
FROM tablename
GROUP BY Date
HAVING MAX(CASE WHEN region = 'NC' THEN Cases END) >
MAX(CASE WHEN region = 'NA' THEN Cases END)
使用上述查询作为子查询:
SELECT *
FROM tablename
WHERE Date IN (
SELECT Date
FROM tablename
GROUP BY Date
HAVING MAX(CASE WHEN region = 'NC' THEN Cases END) >
MAX(CASE WHEN region = 'NA' THEN Cases END)
)
请参阅演示。
推荐阅读
- mysql - Does get_post_meta() makes a separate query to the database?
- excel - Set all the images horizontally
- angular - 用外部网站替换默认的 Ionic webview
- java - 如何在 Spring WebClient 构建器实例中设置 onStatus
- c# - Access Windows.Form of Unity standalone player for windows
- javascript - multiple line charts with independent data Javascript (Chart.js or google-vizualisation)
- javascript - 如何通过javascript在10秒后设置cookie
- c - (已解决)有人可以解释为什么 fread() 不起作用吗?
- ios - iOS - Seam 3 Core Data - 如何抑制控制台输出?
- javascript - 取消选中复选框后,jQuery 为值显示“未定义”