社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

django或sql:查找分组查询集的给定列的唯一值的数目

Saturnix • 6 年前 • 1809 次点击  

我有一个像这样的数据集

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

从这个结果中,我如何清除所有只出现一次的成员(只有一个位置的成员)?我试过使用distinct,但它不能解决问题。

另外,我想用django orm编写这个,只需一个queryset,但是 group_by 必须与一起使用 annotate aggregate ,但这些只适用于sum,count,avg…这是正确的方法吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39617
文章 [ 1 ]  |  最新文章 6 年前
Gordon Linoff
Reply   •   1 楼
Gordon Linoff    7 年前

你可以用 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;