我有这个问题:
找到至少有3种不同速度的PC标记
使用此查询:
select p.marker,p.type,speed
from product as p
join pc as pc on(p.model = pc.model)
order by marker,speed
我可以看到包含所有标记,模型及其特定速度的表格。但是,如何只显示超过3种速度的标记?使用此查询,我可以识别哪个标记超过3,但我希望在答案中准确地查询。所以它将只返回我想要的标记
答案 0 :(得分:0)
将GROUP BY
与HAVING
子句一起使用就足够了。
如果您需要针对不同速度的解决方案,请使用count(distinct speed) >= 3
替换条件。
select p.marker, p.type
from product as p
join as pc on p.model = pc.model
group by 1,2
having count(pc.speed) >= 3
order by 1,2
group和order by中的数字有效地映射到select子句中提到的列。
答案 1 :(得分:0)
您需要COUNT()
,然后执行JOIN
select p.marker,p.type, xxx.speed
from product as p
join (select count(distinct speed) as speed, model
from pc
group by model
having count(distinct speed > 3) xxx on p.model = xxx.model
order by p.marker,xxx.speed;
答案 2 :(得分:0)
如果您需要有关marker
的信息,那么该信息应该在group by
子句中 - 而不是其他内容。其余的只是一个having
子句和join
组合表:
select p.marker, count(distinct speed) as num_speeds
from product p join
pc
on p.model = pc.model
group by p.marker
having count(distinct speed) >= 3;