我有一个看起来像这样的数据集
member position
0 1
0 0
0 1
0 1
1 0
1 1
1 0
1 1
1 1
2 0
2 0
2 0
我要实现的目标是知道哪些成员只有一个职位。我从SQL开始:
SELECT * FROM 'table' GROUP BY member, position
它给了我
member position
0 0
0 1
1 0
1 1
2 0
从这个结果来看,我该如何剔除仅出现一次的所有成员(只有1个位置的成员)?我尝试过DISTINCT,但不能解决问题。
另外,我想用单个查询集在Django ORM中编写此代码,但是
group_by
必须与annotate
或aggregate
一起使用,但是这些仅与Sum,Count,Avg一起使用...正确的方法?
最佳答案
您可以在having
中使用group by
子句。您的问题有点模棱两可。如果您希望成员只有一个position
值:
SELECT member
FROM t
GROUP BY member
HAVING MIN(position) = MAX(position);
如果您希望成员/职位组合仅出现一次:
SELECT member, position
FROM t
GROUP BY member, position
HAVING COUNT(*) = 1;
关于sql - Django或SQL:为分组查询集查找给定列的多少个唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57335106/