2014-09-03 218 views
0

我不知道如何计算不同的值。使用如果在选择列mysql count distinct value

我SQLFIDDLE这里

http://sqlfiddle.com/#!2/6bfb9/3

记录显示:

create table team_record (
    id tinyint, 
    project_id int, 
    position varchar(45) 
); 

insert into team_record values 
(1,1, 'Junior1'), 
(2,1, 'Junior1'), 
(3,1, 'Junior2'), 
(4,1, 'Junior3'), 
(5,1, 'Senior1'), 
(6,1, 'Senior1'), 
(8,1, 'Senior2'), 
(9,1, 'Senior2'), 
(10,1,'Senior3'), 
(11,1, 'Senior3'), 
(12,1, 'Senior3') 

我需要计算所有不同的价值,初级和高级柱之间。

为1

我需要看到导致这样的事情都相同的值也要算。

PROJECT_ID SENIOR_TOTAL JUNIOR_TOTAL 
1    3    3 

mysql query is this。但这不是查询以获得上述结果。

SELECT 
    `team_record`.`project_id`, 
    `position`,  
    SUM(IF(position LIKE 'Senior%', 
     1, 
     0)) AS `Senior_Total`, 
    SUM(IF(position LIKE 'Junior%', 
     1, 
     0)) AS `Junior_Total` 
FROM 
    (`team_record`)   
WHERE 
    project_id = '1'   
GROUP BY `team_record`.`project_id` 

也许你可以帮助我解决上述问题以获得我需要的结果。

感谢

+0

如果将数字组分分隔到另一列 – Strawberry 2014-09-03 07:12:48

回答

6

我想你想要这样的:

​​3210

的情况下将返回NULL,如果当为false时(即ELSE NULL是默认的,我不再赘述),和零点AREN不计入DISTINCT。

此外,不必要的反勾号,括号和限定删除。

+0

好答案,这将会更简单(也更快)。欢呼声... – Wanderer 2014-09-03 07:05:21

+0

正是这样!完善!! – freddy 2014-09-03 07:06:43