【问题标题】:Finding most frequent values in column of array in SQL Alchemy在 SQLAlchemy 中的数组列中查找最常见的值
【发布时间】:2015-01-19 21:20:02
【问题描述】:

我希望返回列中出现频率最高的事件。我知道如何在 SQL 中做到这一点,但不知道 SQL Alchemy。例如,我有这个带有 Posts 的数据库。每个帖子都有一个文本字段和一个类别字段。我希望按顺序返回前 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: "Text", "Other"
Post 2: "Text", "Food"

会返回:

{"News", "Games", "Food"}

【问题讨论】:

  • 您的输出与您的描述不符。为什么Food 出现在Games 之前?
  • 我认为这个问题的格式可能有误。如果是这样,您是在问如何在 SA 中进行 SUM AS / GROUP BY / ORDER BY 查询?
  • @Andy 你是对的,食物应该在之后。
  • @Dylrei 差不多...

标签: python database flask sqlalchemy flask-sqlalchemy


【解决方案1】:

假设您要分组的列称为“类别”:

from sqlalchemy import func, desc
session.query(
    func.count(tablename.id).label('qty')
    ).group_by(tablename.category
    ).order_by(desc('qty'))

【讨论】:

  • ...然后通过添加 .limit(3) 来返回前 3 个
  • 返回计数而不是对象本身
【解决方案2】:

@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'))

【讨论】:

    猜你喜欢
    • 2012-08-27
    • 2014-08-04
    • 2013-09-05
    • 2013-02-21
    • 2017-04-21
    • 2011-10-27
    • 2015-04-03
    • 2021-03-07
    相关资源
    最近更新 更多