首页 > 解决方案 > 如何在 sqlalchemy 中获取每天的行数?

问题描述

我有以下简单的表格,

ID    DateTime          Category
--  --------            ----------   
1   2018-05-12 5:05        1
2   2018-05-12 5:10        1
3   2018-05-12 6:25        2
4   2018-05-13 7:40        1
5   2018-05-14 8:50        4

我想计算每个类别每天的条目数,所以结果应该是,

Day          Category   Count
---------    --------  -------
2018-05-12       1        2
2018-05-12       2        1
2018-05-13       1        1
2018-05-14       4        1

我怎么能在 sqlalchmey 中做到这一点?

编辑:我使用的数据库是 PostgreSQL

编辑:列及其具体类型如下,ID - 整数,类别 - 整数,日期时间 - 日期时间

标签: pythonpostgresqlsqlalchemy

解决方案


最简单的方法是执行以下操作(无类别):

from sqlalchemy import text

q = text(
      """
      SELECT d.date, count(se.id)
      FROM (
        SELECT to_char(date_trunc('day', (current_date - offs)), 'YYYY-MM-DD') AS date 
        FROM generate_series(0, <NUMBER_OF_DAYS>, 1) AS offs
     ) d 
     LEFT OUTER JOIN some_table se 
       ON d.date = to_char(date_trunc('day', se.created), 'YYYY-MM-DD'))  
     GROUP BY d.date;
     """
)
session.execute(q).all()

推荐阅读