+------+---------+-------+
| id | revenue | month |
+------+---------+-------+
| 1 | 8000 | Jan |
| 2 | 9000 | Jan |
| 3 | 10000 | Feb |
| 1 | 7000 | Feb |
| 1 | 6000 | Mar |
+------+---------+-------+
上面这个表格,如果使用GROUP BY id
会被分为三组。
+------+---------+-------+
| id | revenue | month |
+------+---------+-------+
| 1 | 8000 | Jan |
| 1 | 7000 | Feb |
| 1 | 6000 | Mar |
+------+---------+-------+
+------+---------+-------+
| id | revenue | month |
+------+---------+-------+
| 2 | 9000 | Jan |
+------+---------+-------+
+------+---------+-------+
| id | revenue | month |
+------+---------+-------+
| 3 | 10000 | Feb |
+------+---------+-------+
此时在第一组中,有三条记录,也就是说有三个revenue。那么此时select id,revenue就无法判定应该取哪一个revenue,所以这样的操作在标准SQL中是不允许的,只能通过聚合函数来处理。