如何用SQL实现2020年10月至2021年10月每月交易记录数统计
解决方案
你可以通过按月份对日期字段分组聚合的方式一次查询出所有月份的交易数,无需重复执行12次查询。
以下是适配你现有Oracle语法的查询语句:
SELECT TO_CHAR(TRUNC(date_created, 'MM'), 'YYYY-MM') AS 统计月份, COUNT(*) AS 月度交易数 FROM Transaction_Details WHERE date_created BETWEEN TO_DATE('2020-10-01 01:00:00','YYYY-MM-DD hh24:mi:ss') AND TO_DATE('2021-10-01 01:00:00','YYYY-MM-DD hh24:mi:ss') GROUP BY TRUNC(date_created, 'MM') ORDER BY TRUNC(date_created, 'MM');
如果使用其他数据库,仅需要调整日期截断逻辑即可:
- MySQL:分组逻辑替换为
DATE_FORMAT(date_created, '%Y-%m'),输出别名直接复用该字段即可 - PostgreSQL:分组逻辑替换为
DATE_TRUNC('month', date_created),和Oracle逻辑基本一致 - 如需展示交易数为0的月份,可以先生成包含所有目标月份的临时序列表,再和交易表做左关联即可。
内容的提问来源于stack exchange,提问作者Ags
相关产品推荐
相关产品推荐

