Mysql 按性别统计年龄范围

Mysql 按性别统计年龄范围,mysql,Mysql,这是我的疑问: SELECT (CASE WHEN service_year <= 2 THEN '0-2' WHEN service_year BETWEEN 3 AND 5 THEN '3-5' WHEN service_year BETWEEN 6 AND 9 THEN '6-9' WHEN service_year > 9 THEN '>9' WHEN service_year IS

这是我的疑问:

SELECT
    (CASE
        WHEN service_year <= 2 THEN '0-2'
        WHEN service_year BETWEEN 3 AND 5 THEN '3-5'
        WHEN service_year BETWEEN 6 AND 9 THEN '6-9'
        WHEN service_year > 9 THEN '>9'
        WHEN service_year IS NULL THEN '(NULL)'
     END) AS range_service,
     COUNT(*) as jumlah
     FROM (SELECT gender, TIMESTAMPDIFF(YEAR, join_date, CURDATE()) AS service_year FROM employee) AS dummy_table
     GROUP BY range_service
     ORDER BY range_service
输出为:

我想这样做:


您可以在以下情况下使用IF和case

SELECT
  (CASE
      WHEN service_year <= 2 THEN '0-2'
      WHEN service_year BETWEEN 3 AND 5 THEN '3-5'
      WHEN service_year BETWEEN 6 AND 9 THEN '6-9'
      WHEN service_year > 9 THEN '>9'
      WHEN service_year IS NULL THEN '(NULL)'
   END) AS range_service,
  sum( IF(gender ='Male' ,
       (CASE  WHEN service_year <= 2 THEN 1 ELSE 0
            WHEN service_year BETWEEN 3 AND 5 THEN 1 ELSE 0
            WHEN service_year BETWEEN 6 AND 9 THEN 1 ELSE 0
            WHEN service_year > 9 THEN 1 ELSE 0
            WHEN service_year IS NULL THEN 0
            END), 0 )) AS Male, 
  sum( IF(gender ='Female' ,
       (CASE  WHEN service_year <= 2 THEN 1 ELSE 0
            WHEN service_year BETWEEN 3 AND 5 THEN 1 ELSE 0
            WHEN service_year BETWEEN 6 AND 9 THEN 1 ELSE 0
            WHEN service_year > 9 THEN 1 ELSE 0
            WHEN service_year IS NULL THEN 0
            END), 0 )) AS Female 
 FROM (SELECT gender, TIMESTAMPDIFF(YEAR, join_date, CURDATE()) AS service_year FROM employee) AS dummy_table
   GROUP BY range_service
   ORDER BY range_service

当性别=‘男性’时使用countcase,当性别=‘男性’时使用countcase,当性别=‘男性’时使用countcase,当性别=‘男性’时使用countcase,当性别=‘男性’时使用countcase,当性别=‘男性’时使用countcase,当性别=‘男性’时使用countcase,则使用countcase,而不是count*@FahadAnjum感谢