sql - Django或SQL:为分组查询集查找给定列的多少个唯一值

标签 sql django sqlite orm

我有一个看起来像这样的数据集

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必须与annotateaggregate一起使用,但是这些仅与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/

相关文章:

android - 应用程序更新时删除数据库

django - 每个虚拟环境都需要django吗?

android - 显示数据库中数据的最佳方式

java - Android 应用程序因 SQL 查询而崩溃

sql - SQL中如何从不相关的表中获取引用值

python - Django urls 调度程序错误 (urls.E004) 确保 urlpatterns 是 url() 实例的列表

django - 列出链接到模型的外键

安卓工作室 : Gradle does not build sql database

mysql - 在行间计算之前对记录进行排序的选项是什么?

sql - 将数据推送到 Azure SQL 数据库