[英]Select rows with the same count in a column from a table
我有一个看起来像这样的表:
Person (Ssn, Name, Age, Petname)
我需要形成一个问题,以返回与Ssn = 1的人具有相同宠物数量的所有人的名字(即,如果Ssn = 1的人在Petname中具有Petname =“ Zeus”的所有人)有宠物应该退还)。 我知道桌子的设计很愚蠢,但它是来自学校的作业,必须看起来像那样。
这就是到目前为止。 我认为部分正确,但是我似乎无法完全弄清楚:
SELECT Name
FROM Person
WHERE (SELECT COUNT(Petname) FROM Person WHERE Ssn = '1')
= (SELECT COUNT(Petname) FROM Person WHERE Ssn != '1');
这应该可以解决问题:
SELECT Name
FROM Person
WHERE SSN <> 1
GROUP BY Name
HAVING COUNT(PetName) = (SELECT COUNT(PetName) FROM PERSON WHERE SSN='1')
这也是带有代码的SQLFiddle 。
尝试这个
select Name from Person
group by Name
having
sum(case when Pnr = '1' then 1 else 0 end) = sum(case when Pnr <> '1' then 1 else 0 end)
假设一个人只有一只,只有一只宠物。
SELECT
Name
FROM
Person
WHERE
PetName = (SELECT Petname FROM Person WHERE Ssn = 1)
AND Ssn <> 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.