加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL CASE那么空案例值

发布时间:2021-03-06 19:26:32 所属栏目:编程 来源:网络整理
导读:SELECT CASE WHEN age IS NULL THEN 'Unspecified' WHEN age 这是我的查询.这些是功效: 可是,假如table.age在一个种别中没有至少1个年数,那么它将在功效中忽略该环境.像这样: 该数据集没有任何年数的记录 SELECT a.ageband,IFNULL(t.agecount,0)FROM ( --

    SELECT CASE WHEN age IS NULL THEN 'Unspecified' 
                WHEN age < 18 THEN '<18' 
                WHEN age >= 18 AND age <= 24 THEN '18-24' 
                WHEN age >= 25 AND age <= 30 THEN '25-30' 
                WHEN age >= 31 AND age <= 40 THEN '31-40' 
                WHEN age > 40 THEN '>40' 
            END AS ageband,COUNT(*) 
       FROM (SELECT age 
               FROM table) t 
   GROUP BY ageband

这是我的查询.这些是功效:

可是,假如table.age在一个种别中没有至少1个年数,那么它将在功效中忽略该环境.像这样:

该数据集没有任何年数的记录<因此,年数段“< 18”没有呈现.我奈何才气使它表现并返回值0 ?? 最佳谜底 您必要一个agebands表来添补没有匹配行的条目标功效.这可以通过现实表来完成,可能行使如下子查询动态天生:

SELECT a.ageband,IFNULL(t.agecount,0)
FROM (
  -- ORIGINAL QUERY
  SELECT
    CASE
      WHEN age IS NULL THEN 'Unspecified'
      WHEN age < 18 THEN '<18'
      WHEN age >= 18 AND age <= 24 THEN '18-24'
      WHEN age >= 25 AND age <= 30 THEN '25-30'
      WHEN age >= 31 AND age <= 40 THEN '31-40'
      WHEN age > 40 THEN '>40'
    END AS ageband,COUNT(*) as agecount
  FROM (SELECT age FROM Table1) t
  GROUP BY ageband
) t
right join (
  -- TABLE OF POSSIBLE AGEBANDS
  SELECT 'Unspecified' as ageband union
  SELECT '<18' union
  SELECT '18-24' union
  SELECT '25-30' union
  SELECT '31-40' union
  SELECT '>40'
) a on t.ageband = a.ageband

演示:http://www.sqlfiddle.com/#!2/7e2a9/10

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读