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
我试图创建这样的 flask-sqlalchemy 查询:
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;
解决方案
你可以试试
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 函数文档
推荐阅读
- python - 从热图数据生成边界框
- java - 如何在不使用 Gson 进行类型转换的情况下将嵌套的 json 转换为 Map
- python - 如何根据点的选择更新直方图(Altair)?
- python - 使用 Python 将抓取的数据写入 JSON
- angular - 过滤 Firebase 数据时,Where() 和 orderBy() 过滤器不能一起工作
- excel - 条件格式突出显示不应该的单元格
- sql - 如何通过使用多个条件并在另一个表中查找值来查询一个表中的数据
- vue.js - vue函数不返回动态属性而是显示初始值
- r - R中的聚合()函数与总和
- python - 我在输入不等于 q 或退出时做到了,但是当我输入 q 或退出时