您查询不包含作为聚合函数一部分的特定表达式

img

我想连接两个查询然后按年龄分组
select 年龄 ,总人数 ,女 ,男 from(

SELECT 年龄, count(身份证号) AS 总人数, sum(switch(性别='女',1,性别='男',0) ) AS 女, sum(switch(性别='男',1,性别='女',0) ) AS 男
FROM 21本科
GROUP BY 年龄

union all

SELECT 年龄, count(身份证号) AS 总人数, sum(switch(性别='女',1,性别='男',0) ) AS 女, sum(switch(性别='男',1,性别='女',0) ) AS 男
FROM 本科老生
GROUP BY 年龄)

group by 年龄;

但是不用group by 又只是拼接而已

img


我该怎么搞啊?

先把数据集union之后,在分组计算,不知道你是否是需要这样的结果


SELECT 年龄, count(身份证号) AS 总人数
    , sum(switch(性别='女',1,性别='男',0) ) AS 女
    , sum(switch(性别='男',1,性别='女',0) ) ASfrom (
    select 年龄,身份证号,性别 from 21本科
    union all select 年龄,身份证号,性别 from 本科老生
) a
GROUP BY 年龄

GROUP BY 年龄
改为
GROUP BY 年龄,男,女