Ich habe eine Tabelle:Ist es möglich, Group by, Having und Sum zu kombinieren?
------------------------
|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 |
------------------------
ich einige Berechnungen vornehmen müssen, und versuchen Sie es nicht wirklich komplexe Anforderung in einem zu machen, sonst weiß ich, wie es mit den Zahlen der Anfragen zu berechnen. Ich brauche führte Tabelle wie folgt vor:
---------------------------------------------------------
|p_id|total_earned| AVG | Count | SUM |
| | | (desired)|(if earned != 0)|(desired)|
---------------------------------------------------------
| 1 | 7 | 10 | 1 | 30 |
| 2 | 9 | 2 | 3 | 6 |
---------------------------------------------------------
ich bisher bauen:
SELECT p_id, SUM(earned), AVG(desired), Sum(desired)
FROM table GROUP BY p_id
Aber ich kann nicht herausfinden, wie die Anzahl der gruppierten Datensätze mit Bedingungen zu berechnen. Ich kann diese Nummer mit HAVING
aber in getrennter Anfrage erhalten.
Ich bin fast sicher, welche SQL diese Macht haben sollte.
ich Postgres, aber ich suche nach universelle Lösung. –