为什么查询结果不对 ,应该是 男6,女1

为什么查询结果不对 ,应该是 男6,女1

SELECT
    a.sex,
     @count =count(1) 人数 ,
     case  @count when  @count>5 then '超过5人'
     else '低于5人' end 读者等级
FROM
    student a 
GROUP BY
    a.sex;

img

你在查询中使用了变量赋值,变量则只保存最后一行时的数据,不能保留多个数据,所以你的指令可以这么写


SELECT
    a.sex,
    count(1) 人数 ,
     case when  count(1)>5 then '超过5人'
     else '低于5人' end 读者等级
FROM
    student a 
GROUP BY
    a.sex;
  • 文章:为什么要用 where 1=1 中也许有你想要的答案,请看下吧
  • 除此之外, 这篇博客: 第二章 关系数据结构及关系的完整性习题解析中的 7、已知三个域:男人={李基,张鹏},女人={王方,刘玉},子女={李键,张睿,张峰}。这一组域(男人,女人,子女)的笛卡尔积的基数为 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • A.(正确答案)解析: 基数为集合中元素的个数。这组域的基数分别为 2、2、3。相乘即得12
    B.(错误答案)解析: 基数为集合中元素的个数。这组域的基数分别为 2、2、3。相乘即得12
    C.(错误答案)解析: 基数为集合中元素的个数。这组域的基数分别为 2、2、3。相乘即得12
    D.(错误答案)解析: 基数为集合中元素的个数。这组域的基数分别为 2、2、3。相乘即得12