SQL GROUP BY问题:需新增MachineId列并支持多机器ID查询
解决方案
要实现按**年月(MonthYear)和机器ID(MachineId)**双维度分组统计,同时支持查询多个机器ID,只需对原SQL做3处关键修改:
修改点说明
- 在
SELECT列表中新增"MachineId"字段,用于区分不同机器的统计数据 - 将
WHERE条件中的=改为IN,支持传入多个机器ID参数 - 在
GROUP BY子句中添加"MachineId",确保分组维度包含所有非聚合字段
修改后的完整SQL
select "MachineId", to_char("CreateTime", 'YYYY-MM') as MonthYear, floor(sum("Time"))::integer / 60 as "#MinutesWorkouts", sum(case when "Type" = 29 then 1 else 0 end) as "#Streaming", (sum(case when "Type" = 29 then "Time" else 0 end))::integer / 60 as "StreamingMinutes", sum(case when "Type" = 9 then 1 else 0 end) as "#GuidedProgram", sum(case when "Type" = 28 then 1 else 0 end) as "#Tall" from match_history WHERE "MachineId" IN ({{Machine_Id}}) GROUP by "MachineId", to_char("CreateTime", 'YYYY-MM')
补充说明
- 若你的参数工具支持数组格式输入,
IN ({{Machine_Id}})可直接适配多ID场景(比如传入1,2,3或[1,2,3]格式的参数) - 修改后查询结果会按「机器ID+年月」的组合维度展示,每一行对应单台机器单个月份的训练统计数据
内容的提问来源于stack exchange,提问作者user20102590
相关产品推荐
相关产品推荐

