2 u010050475 u010050475 于 2013.06.24 15:19 提问

mysql 组函数count的具体用法

SELECT d.department,
COUNT(CASE e.sex WHEN e.sex='f' AND p.position !='主管' THEN p.id END) fq,
COUNT(CASE e.sex WHEN e.sex='f' AND p.position ='主管' THEN p.id END) fz,
COUNT(CASE e.sex WHEN e.sex='m' AND p.position !='主管' THEN p.id END) mq,
COUNT(CASE e.sex WHEN e.sex='m' AND p.position ='主管' THEN p.id END) mz,
COUNT(e.id) xj
FROM department d LEFT JOIN employ e ON d.id=e.deptid
LEFT JOIN position p ON e.positionid=p.id
GROUP BY d.id;

出现后面两个count统计不出来是什么原因?
为什么下面个可以查出来?
SELECT d.department,
COUNT(CASE WHEN e.sex='f' AND p.position !='主管' THEN p.id END) fq,
COUNT(CASE WHEN e.sex='f' AND p.position ='主管' THEN p.id END) fz,
COUNT(CASE WHEN e.sex='m' THEN CASE WHEN p.position !='主管' THEN p.id END END) mq
COUNT(CASE WHEN e.sex='m' THEN CASE WHEN p.position ='主管' THEN p.id END END) mz,
COUNT(e.id) xj
FROM department d LEFT JOIN employ e ON d.id=e.deptid
LEFT JOIN position p ON e.positionid=p.id
GROUP BY d.id

1个回答

shendixiong
shendixiong   2013.09.18 17:47
SELECT CASE 1 WHEN 1=1 THEN 'a' else 'b' END;
SELECT CASE 2 WHEN 1=1 THEN 'a' else 'b' END;

是你的理解错误!上面的两行脚本 我想你以为都等于a吧?
其实思路就跟你的一样。也可以这样写

SELECT CASE 1=1 WHEN 1=1 THEN 'a' else 'b' END;
SELECT CASE 2=2 WHEN 1=1 THEN 'a' else 'b' END;

而结果却都是'a' 道理一样

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
MySQL sum(),count()组合用法
SELECT SUM(b.clickCount) FROM (  SELECT COUNT(cac.article_id) as clickCount  from   ( SELECT ca.id as articleId, article_title as articleTitle, csu.user_account as userAccount FROM car_articl
mysql中count函数使用方法详解
http://www.111cn.net/database/mysql/55796.htm count(*) 它返回检索行的数目, 不论其是否包含 NULL值。 SELECT 从一个表中检索,而不检索其它的列,并且没有 WHERE子句时, COUNT(*)被优化到最快的返回速度。 例如:  代码如下 复制代码 mysql> SELECT
MySQL中count()函数的使用
MySQL中null值和count的用法。
mysql中count的用法
1、 $query="select count(*) as total from User"中 count是什么意思as total是什么意思 count(*) 是计算user表中的记录条数,也就是用户数量,as total只是为了给count(*)起一个别名,为了更好的识别count(*)的意义   2、          这几天用到mysql数据库,对于count(*)用法知
关于mysql中的count()函数
关于mysql中的count()函数
MySQL中count函数使用方法详解
count函数是用来统计表中或数组中记录的一个函数,下面我来介绍在MySQL中count函数用法与性能比较吧。 count(*) 它返回检索行的数目, 不论其是否包含 NULL值。 SELECT 从一个表中检索,而不检索其它的列,并且没有 WHERE子句时, COUNT(*)被优化到最快的返回速度。 例如:SELECT COUNT(*) FROM student; COUNT(
count 变量的使用
count:统计出现的次数,当某种情况发生时,执行 +1 的动作,+1 的动作常置于循环体内。基本结构如下;count = 0 while count < vnum and **: ... count += 1 ...
mysql 使用count()统计总结与思考
如果你的需要是统计总行数时,为什么要使用count(*),而避免使用指定具体的列名?count()函数里面的参数是列名的的时候,那么会计算这个字段有值项的次数。也就是,该字段没有值的项并不会进入计算范围(就是网上常说的值为null的项不纳入统计)很多地方都有类似表述:COUNT ( column ) counts all non-NULL occurences (or should ;) … 计算
不是单组分组函数和不是group表达式
oracle中经常会遇到这两个错误,其实是一个原理。如下sql语句:select deptno,job,avg(sal)  from emp;数据库会报出:不是单组分组函数的错误,指定了聚合函数,又同时制定了其他列,还想不按照指定的列来分组,你到底想让oracle怎么做呢?这根本就得不出结果。就像你需要统计班上男女生的人数,但是又不能分组,只能在一条数据里表示出来,怎么能办得到呢?
MySql中SUBSTRING_INDEX函数
SUBSTRING_INDEX(str,delim,count) 返回字符串 str 中在第 count 个出现的分隔符 delim 之前的子串。如果 count 是一个正数,返回从最后的(从左边开始计数)分隔符到左边所有字符。如果 count 是负数,返回从最后的(从右边开始计数)分隔符到右边所有字符。 mysql>SELECT SUBSTRING_INDEX('www.baidu.com',