为什么出现在 GROUP BY 子句后面的字段才能出现在 SELECT 子句里?

SELECT 
MIN(sal),department_id 
FROM
    (SELECT
    AVG(salary) AS sal,e.department_id 
    FROM
    employees e
    GROUP BY
    department_id)
AS sal.d

为什么from后的子表中有的字段也不能查询呢,MIN(sal)显示正确,但是department_id显示为null

group by是按字段列表分组,所以只有在group by后面出现的字段才能在select里面出现。
比如按性别分组,统计男,女同学的人数,如果select里面出现了姓名字段,显然是没有意义的,也不符合逻辑。

单表查询就不要取别名了。子查询单独执行看下结果。

SELECT
    AVG(salary) AS sal,e.department_id 
    FROM
    employees e
    GROUP BY
    department_id

或许这样试试呢?

SELECT 
MIN(sal),department_id 
FROM
    (SELECT
    AVG(salary) AS sal,department_id 
    FROM
    employees
    GROUP BY
    department_id)
AS sal.d