Mam tabeli:Czy można łączyć grupy według, posiadania i sumy?
------------------------
|id|p_id|desired|earned|
------------------------
|1 | 1 | 5 | 7 |
|2 | 1 | 15 | 0 |
|3 | 1 | 10 | 0 |
|4 | 2 | 2 | 3 |
|5 | 2 | 2 | 3 |
|6 | 2 | 2 | 3 |
------------------------
muszę dokonać pewnych obliczeń, i spróbować zrobić to w jednym nie bardzo złożonego wniosku, inaczej wiem, jak go obliczyć z liczby żądań. I muszą zaowocować stół jak następuje:
---------------------------------------------------------
|p_id|total_earned| AVG | Count | SUM |
| | | (desired)|(if earned != 0)|(desired)|
---------------------------------------------------------
| 1 | 7 | 10 | 1 | 30 |
| 2 | 9 | 2 | 3 | 6 |
---------------------------------------------------------
zbudować tak daleko:
SELECT p_id, SUM(earned), AVG(desired), Sum(desired)
FROM table GROUP BY p_id
Ale nie mogę dowiedzieć się, jak obliczyć liczbę zgrupowanych rekordów z warunkami. Mogę uzyskać ten numer pod numerem HAVING
, ale w oddzielnym żądaniu.
Jestem prawie pewien, co SQL powinien mieć tę moc.
używam PostgreSQL, ale szukać uniwersalnego rozwiązania. –