如何计算不同行数

2024-04-24 13:22:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我研究过许多类似的话题,但这个问题在stackoverflow的任何地方都没有得到解决。 我有一张桌子:

name|something
john,blabla
john,xdxdxd
john,15kusdprogrammer
eve,givebackrib
malcolm,anything
eve,welcome
eve,to
eve,internet

我希望获得具有计数行的不同名称-SQL查询如下所示:

select distinct name,count(*) from TABLE_NAME group by name order by 2 desc;

结果如下:

eve,4
john,3
malcolm,1

我试过这样创建一个炼金术查询:

TABLE_NAME.query.distinct(TABLE_NAME.name).with_entities(TABLE_NAME.name, count(TABLE_NAME.something)).all()

但我创造的唯一解决方案是:

for name in TABLE_NAME.query.distinct(TABLE_NAME.name).with_entities(TABLE_NAME.name).all():
print("{}: {}".format(name, TABLE_NAME.query.filter(TABLE_NAME.name== name[0]).count()))

但是for循环中的查询需要花费大量的时间。 有人能帮我从sqlite代码创建flask sqlalchemy查询吗:

select distinct name,count(*) from TABLE_NAME group by name order by 2 desc;

Tags: namefrombycounttablegrouporderquery
1条回答
网友
1楼 · 发布于 2024-04-24 13:22:29

你可以试试

TABLE_NAME.query(TABLE_NAME.name, func.count(TABLE_NAME.name).label('count')).group_by(TABLE_NAME.name).all()

按计数顺序应该是这样的

TABLE_NAME.query(TABLE_NAME.name, func.count(TABLE_NAME.name).label('count')).group_by(TABLE_NAME.name).order_by(desc(func.count(TABLE_NAME.name))).all()

sqlalchemy函数documentation

相关问题 更多 >