我不知道如何计算不同的价值。在选择列上使用if
我在这里有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查询是这个。但这不是获得上述结果的查询。
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`
也许您可以帮助我解决上面的查询,以获得所需的结果。
谢谢
我想你想要这个:
SELECT
project_id,
COUNT(DISTINCT CASE when position LIKE 'Senior%' THEN position END) Senior_Total,
COUNT(DISTINCT CASE when position LIKE 'Junior%' THEN position END) Junior_Total
FROM team_record
WHERE project_id = 1
GROUP BY project_id
如果WHEN为false(即ELSE NULL
默认值,为简便起见,我将其省略),则CASE将返回null ,并且DISTINCT中不计算null。
此外,还删除了不必要的后壁虱,方括号和限定词。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句