问题描述
responsive
小白在这里
我想查找给定ID的数字在字母为A时小于字母B时的所有实例。例如,当ID为1时,A的数字为23而B的数字为45.由于23
解决方法
在having
子句中使用条件聚合:
select id,sum(number) number_total
from mytable
where letter in ('A','B')
group by id
having min(case when letter = 'A' then number end) < min(case when letter = 'B' then number end)
这假设(id,letter)
元组在表中是唯一的。否则,您可能希望使用SUM()
而不是MIN()
。
如果您还想显示这些值,则MySQL允许您在having
子句中使用别名:
select
id,sum(number) number_total,min(case when letter = 'A' then number end) number_a,min(case when letter = 'B' then number end) number_b
from mytable
where letter in ('A','B')
group by id
having number_a < number_b