繁体   English   中英

从表中选择一列中具有相同计数的行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM