在一列中选择该值未在另一列中出现 5 次的值
Posted
技术标签:
【中文标题】在一列中选择该值未在另一列中出现 5 次的值【英文标题】:Select values in one column where that value do not appear in other column 5 times 【发布时间】:2015-11-19 03:45:57 【问题描述】:假设我有一个包含两列的 SQL 表 members
:username
和 sponsor
:
username | sponsor
------------------
bill | bob
username1| bill
username2| username2
username3| bill
username4| bill
username5| bill
username6| bill
username7| bill
collin | username6
austin | usename3
我想编写一个查询,返回所有用户名,其中这些用户名没有在列赞助商中出现 5 次。如何编写这个 SQL 查询?
期望的输出:
username1
username2
username3
username4
username5
username6
username7
collin
austin
【问题讨论】:
类似于 SELECT * FROM members WHERE username NOT IN (SELECT username FROM members GROUP BY 赞助商 WHERE COUNT(*)5)。 您收到错误还是产生了不正确的结果? 【参考方案1】:我认为这应该可行:
SELECT m.username
FROM members m,
(SELECT sponsor, COUNT(sponsor)
FROM members
GROUP BY sponsor
HAVING COUNT(sponsor) < 5) c
WHERE m.username = c.sponsor
我从您的示例输出中假设您想要赞助少于 5 个其他成员的成员。
【讨论】:
你做的那个只显示 username2 username6 username3【参考方案2】:这个查询回答了问题。
SELECT m.username FROM members m, (SELECT sponsor, COUNT(sponsor) FROM members GROUP BY sponsor HAVING COUNT(sponsor) >= 5) c WHERE m.username != c.sponsor
感谢达尔文!
【讨论】:
以上是关于在一列中选择该值未在另一列中出现 5 次的值的主要内容,如果未能解决你的问题,请参考以下文章
在一列中对具有相同数据的行进行分组,并将其相关数据汇总在另一列中 [ORACLE SQL]
Pyspark:如何根据另一列中的匹配值从数组中的第一次出现中选择直到最后的值