Mam następującą strukturę:SQL: suma wartości, ale tylko dla różnych identyfikatorów - suma warunkowa?
dzień z wieloma wydarzeniami Typ1 i Typ2, gdzie Typ1 i Typ2 mają kluczy obcych do swoich dni. Typ2 ma również czas trwania.
Teraz chcę policzyć wszystkie zdarzenia typ1, wszystkie zdarzenia typu 2 i sumę czasu trwania typ2.
Przykład Dane:
Dzień:
ID = 1 | Date = yesterday | ...
Typ1:
ID = 1 | FK_DAY = 1 | ...
ID = 2 | FK_DAY = 1 | ...
Typ2:
ID = 1 | FK_DAY = 1 | duration = 10
ID = 2 | FK_DAY = 1 | duration = 20
Chcę teraz wynik:
Day.ID = 1 | countTyp1 = 2 | countTyp2 = 2 | sumDurationTyp2 = 30
Mój problem jest sumą, potrzebuję czegoś takiego jak "suma dla odrębnego typ2.ID" ... Czy ktoś wie, jak to rozwiązać?
Używam coś jak poniżej, ale to oczywiście nie działa tak, jak chcesz:
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;
Co RDBMS i jaka wersja? – Tobsey