是否可以为MySQL查询设置自定义分组依据?
我一直在试图找到在我的查询中对两个年龄组进行分组的最简单方法。这样的事情有可能奏效吗是否可以为MySQL查询设置自定义分组依据?,mysql,group-by,Mysql,Group By,我一直在试图找到在我的查询中对两个年龄组进行分组的最简单方法。这样的事情有可能奏效吗 SELECT age, sum(case when age < '20' then 1 else 0 end), sum(case when age > '20' then 1 else 0 end) FROM Contact GROUP BY ...."custom group one"......"custom group one".....?? 解决了的: 注意:AS可用于将别名分配给SE
SELECT age,
sum(case when age < '20' then 1 else 0 end),
sum(case when age > '20' then 1 else 0 end)
FROM Contact
GROUP BY ...."custom group one"......"custom group one".....??
解决了的: 注意:
AS
可用于将别名分配给SELECT
语句中的分组条件,从而避免重复两次条件,即
SELECT CASE
WHEN age = '21' THEN 'young'
WHEN age BETWEEN '22' AND '60' THEN 'middle'
ELSE 'old'
END AS age_range, Count(id)
FROM Contact
GROUP BY age_range
因此,这将是:
SELECT
COUNT(1),
age>20 AS Above20
FROM t
GROUP BY age>20
-看看这个
或者,使用SUM()
和列视图:
SELECT
SUM(IF(age>20, 1, 0)) AS Above20,
SUM(IF(age<=20, 1, 0)) AS Below20
FROM
t
选择
20岁以上的总和(如果(年龄>20,1,0)),
总和(如有的话)(agePlease,发布您的数据样本以及表结构和所需结果HX Alma Do。我更新了我的原始帖子。@user1218172请创建一个答案并将其标记为正确答案。谢谢。如果我想通过定义第三个或第四个年龄组来创建更多的组,我将如何修改此查询…对不起…我应该放三个或者我的例子中的四组。是的,你们应该展示完整的样本。否则答案可能不像你们希望的那个样精确
SELECT
COUNT(1),
age>20 AS Above20
FROM t
GROUP BY age>20
SELECT
SUM(IF(age>20, 1, 0)) AS Above20,
SUM(IF(age<=20, 1, 0)) AS Below20
FROM
t