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感谢