SELECT city,COUNT(*)AS "人数合计"
SUM(CASE WHEN gender='M' THEN 1 ELSE 0 END)AS "女士人数",
SUM(CASE WHEN gender='F' THEN 1 ELSE 0 END) AS "男士人数"
FROM test1 GROUP BY city
把order by删了,你前面按照city分组之后,性别这列就变成了一对多了,一个分组肯定会有多个性别在,所以数据库没办法判断你是用哪个性别排序,反正题目也没要求,你可以直接删了排序,如果一定要排序把性别也丢去分组估计也可以