我有一个表名 results
```
+----+------+------+--------+
| ID | USER | EXAM | RESULT |
+----+------+------+--------+
| 1 | 10 | ssc | 4.2 |
| 2 | 10 | hsc | 4.5 |
| 3 | 11 | ssc | 4.0 |
| 4 | 11 | hsc | 4.4 |
| 5 | 12 | ssc | 5.0 |
| 6 | 12 | hsc | 5.0 |
| 7 | 13 | ssc | 3.0 |
| 8 | 13 | hsc | 3.0 |
+----+------+------+--------+
我的目标是检索具有特定分数的不同用户。例如,ssc结果>4.0和hsc结果>4.2。
如果我把这样的东西
select distinct user from results where
( exam = 'ssc' and result > 4.0 )
and
( exam = 'hsc' and result > 4.2 )
它将返回空,因为检查不能同时等于“ssc”和“hsc”。如果我像这样把条件放在中间
select distinct user from results where
( exam = 'ssc' and result > 4.0 )
or
( exam = 'hsc' and result > 4.2 )
它将包括意外的用户11,因为我们的目标是过滤ssc中大于4.0的用户。
我的预期输出是这样的
10
12
我们有办法吗?
3条答案
按热度按时间yquaqz181#
使用条件聚合进行筛选
kupeojn62#
一种使用join的方法
lxkprmvk3#
您可以尝试在中使用条件聚合函数
HAVING
并检查两个条件是否成立。查询1:
结果: