Ho la seguente struttura:SQL: somma di un valore ma solo per ID distinti - somma condizionale?
Giorno con più eventi di typ1 e typ2, dove typ1 e typ2 hanno chiavi esterne ai rispettivi giorni. Typ2 ha anche durata.
Ora voglio contare tutti gli eventi typ1, tutti gli eventi typ2 e la somma della durata typ2.
Esempio Dati:
Giorno:
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
Ora voglio il risultato:
Day.ID = 1 | countTyp1 = 2 | countTyp2 = 2 | sumDurationTyp2 = 30
Il mio problema è la somma, ho bisogno di qualcosa come "somma per distinto typ2.ID" ... Qualcuno sa un modo per risolverlo?
sto usando qualcosa di simile a quanto segue, ma che ovviamente non funziona nel modo desiderato:
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;
Che tipo di RDBMS e quale versione? – Tobsey