我需要查询一个表,其中一个字段的数量应该等于另一个表,在同一个表中,对于同一个组。
这是我的表:
ID BUYER CAR
1 1 Audi
2 1 Audi
3 1 BMW
4 1 BMW
5 2 Audi
6 2 Audi
7 2 BMW
8 2 BMW
9 2 BMW
如果买家购买了相同数量的奥迪而不是宝马,我需要得到,如果不是,那些行不应该被取回。
所以,有了这个逻辑,查询应该只返回买方1的所有行,因为他买了2辆奥迪和2辆宝马。
这将是返回表:
ID BUYER CAR
1 1 Audi
2 1 Audi
3 1 BMW
4 1 BMW
希望你能帮助我。
这是表格:
答案 0 :(得分:0)
按买方分组并使用having子句按宝马和奥迪计算过滤。然后选择找到的买家的所有记录。
select *
from mytable
where buyer in
(
select buyer
from mytable
group by buyer
having
sum(case when car = 'BMW' then 1 end) =
sum(case when car = 'Audi' then 1 end)
);