The following sample query finds the average quantity of parts supplied for any part distributed by more than one supplier:
SELECT pno, AVG(qty) FROM partsupp GROUP BY pno HAVING COUNT(*) >= 2
The query results appear as follows:
pno | AVG(qty) |
---|---|
P1 | 300 |
P2 | 250 |
P4 | 250 |
P5 | 250 |
The aggregate property evaluated in a HAVING clause may be an expression involving another aggregate function. Aggregate functions in HAVING clauses are demonstrated in the following query:
SELECT pno, AVG(qty) FROM partsupp GROUP BY pno HAVING AVG(qty) * 2 > COUNT(*) * 200
The test condition in a HAVING clause may also include nested queries, as illustrated in the following query:
SELECT pno, AVG(qty) FROM partsupp GROUP BY pno HAVING AVG(qty) * 2 > (SELECT qty FROM partsupp WHERE pno = "P2" AND sno = "S2")