You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在聚合查询中如何统计匹配筛选条件的行数

解决方案:按日聚合总Qty并统计Type B的行数

你想要的是在同一个分组查询里同时拿到两个聚合结果——每日的总qty,以及当日type为B的记录条数,这用条件聚合就能轻松实现,不用复杂的子查询或者关联操作。

给你写个直接适配你表结构的完整SQL示例:

SELECT
  date_trunc('day', date) AS day,
  SUM(qty) AS total_daily_qty,
  COUNT(CASE WHEN type = 'B' THEN 1 END) AS count_type_b
FROM
  your_table_name  -- 这里替换成你的实际表名
GROUP BY
  date_trunc('day', date)
ORDER BY
  day;

代码细节解释:

  • date_trunc('day', date):把datetime类型的date字段截断到“日”维度,确保同一天的所有记录会被归到同一分组里。
  • SUM(qty):直接计算当日所有记录的qty总和,就是你需要的当日总qty。
  • COUNT(CASE WHEN type = 'B' THEN 1 END):通过CASE语句筛选出type为B的记录,符合条件的返回1,不符合的返回NULL;而COUNT函数会自动忽略NULL值,最终统计的就是当日type为B的行数。(你也可以用SUM(CASE WHEN type = 'B' THEN 1 ELSE 0 END),效果完全一致)

用你的测试数据执行后,结果会是这样:

daytotal_daily_qtycount_type_b
2018-03-2130
2018-03-2271

如果需要按月统计,只需要把date_trunc('day', date)改成date_trunc('month', date)即可,其他部分无需调整。

内容的提问来源于stack exchange,提问作者balsick

火山引擎 最新活动