Python 在SQL Alchemy中查找数组列中最频繁的值
我希望返回列中最频繁出现的内容。我知道如何在SQL中实现这一点,但不知道SQL炼金术。例如,我有一个包含帖子的数据库。每个帖子都有一个文本字段和一个类别字段。我希望按顺序返回前3个类别,如下所示:Python 在SQL Alchemy中查找数组列中最频繁的值,python,database,flask,sqlalchemy,flask-sqlalchemy,Python,Database,Flask,Sqlalchemy,Flask Sqlalchemy,我希望返回列中最频繁出现的内容。我知道如何在SQL中实现这一点,但不知道SQL炼金术。例如,我有一个包含帖子的数据库。每个帖子都有一个文本字段和一个类别字段。我希望按顺序返回前3个类别,如下所示: Post 1: "Text", "Food" Post 2: "Text", "Games" Post 2: "Text", "Games" Post 2: "Text", "News" Post 2: "Text", "News" Post 2: "Text", "News" Post 2: "Te
Post 1: "Text", "Food"
Post 2: "Text", "Games"
Post 2: "Text", "Games"
Post 2: "Text", "News"
Post 2: "Text", "News"
Post 2: "Text", "News"
Post 2: "Text", "Other"
Post 2: "Text", "Food"
将返回:
{"News", "Games", "Food"}
假设要分组的列名为“类别”:
@dylrei回答只是缺少一位,以便返回对象和计数器
from sqlalchemy import func, desc
session.query(tablename.category, <--- You need to add this
func.count(tablename.id).label('qty')
).group_by(tablename.category
).order_by(desc('qty'))
来自sqlalchemy导入函数,desc
session.query(tablename.category,您的输出与您的描述不匹配。食物
为什么出现在游戏
之前?我认为这个问题可能格式不正确。如果是这样,您是在问如何在SA中按查询/分组/按查询顺序求和吗?@Andy您是对的,食物应该在后面。@Dylrei差不多……然后您会返回t。)他通过添加。limit(3)返回计数,而不是对象本身
from sqlalchemy import func, desc
session.query(tablename.category, <--- You need to add this
func.count(tablename.id).label('qty')
).group_by(tablename.category
).order_by(desc('qty'))