I understand why aggregate functions have to be used in the having part of a query, by do not understand the reasoning why the two queries bellow return different values ie. what each of the functions is returning:

```
SELECT col1 FROM tbl
HAVING col1 > AVG(col1);

SELECT col1 FROM tbl
HAVING col1 > SELECT(AVG(col1) FROM tbl);

```