Tôi có cấu trúc sau:SQL: tổng của một giá trị nhưng chỉ cho các id riêng biệt - tổng điều kiện?
Ngày có nhiều sự kiện typ1 và typ2, trong đó typ1 và typ2 có khóa ngoài vào ngày tương ứng. Typ2 cũng có thời gian.
Bây giờ tôi muốn đếm tất cả các sự kiện typ1, tất cả các sự kiện typ2 và tổng thời lượng typ2.
Ví dụ dữ liệu:
ngày:
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
bây giờ tôi muốn kết quả:
Day.ID = 1 | countTyp1 = 2 | countTyp2 = 2 | sumDurationTyp2 = 30
Vấn đề của tôi là tổng, tôi cần một cái gì đó như "tổng hợp cho typ2.ID riêng biệt" ... Có ai biết một cách để giải quyết điều đó?
Tôi đang sử dụng một cái gì đó như sau, nhưng điều đó tất nhiên không làm việc theo cách tôi muốn:
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;
RDBMS và phiên bản nào? – Tobsey