Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以为MySQL查询设置自定义分组依据?_Mysql_Group By - Fatal编程技术网

是否可以为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