【发布时间】:2012-10-06 13:55:34
【问题描述】:
我有以下结构:
具有 typ1 和 typ2 多个事件的日期,其中 typ1 和 typ2 具有各自日期的外键。 Typ2 也有持续时间。
现在我想统计所有 typ1 事件、所有 typ2 事件以及 typ2 持续时间的总和。
示例数据:
日期:
ID = 1 | Date = yesterday | ...
类型 1:
ID = 1 | FK_DAY = 1 | ...
ID = 2 | FK_DAY = 1 | ...
类型2:
ID = 1 | FK_DAY = 1 | duration = 10
ID = 2 | FK_DAY = 1 | duration = 20
我现在想要结果:
Day.ID = 1 | countTyp1 = 2 | countTyp2 = 2 | sumDurationTyp2 = 30
我的问题是总和,我需要类似“sum for distinct typ2.ID”之类的东西......有谁知道解决这个问题的方法吗?
我正在使用类似以下的东西,但这当然不能按我想要的方式工作:
SELECT day.id,
count( DISTINCT typ1.id ),
count( DISTINCT typ2.id ),
sum( duration ) AS duration
FROM days
LEFT JOIN typ
ON day.id = typ1.id
LEFT JOIN typ2
ON day.id = typ2.id
GROUP BY day.id;
【问题讨论】:
标签: sql sum conditional