-1
如何计算在以下情况下每campaign
有多少个唯一(hit_type
= click
)? :SQL SUM disctinct values
CREATE TABLE statistics
(`id` int, `uid` int, `hit_type` varchar(10), `name` varchar(55), `date` date)
;
INSERT INTO statistics
(`id`, `uid`, `hit_type`, `name`, `date`)
VALUES
(1,'100','visit','campaign1','2015-03-18'),
(2,'100','visit','campaign1','2015-03-19'),
(3,'100','click','campaign1','2015-03-18'),
(4,'100','click','campaign1','2015-03-18'),
(5,'100','click','campaign1','2015-03-20'),
(6,'100','client','campaign1','2015-03-19'),
(7,'100','client','campaign1','2015-03-20'),
(8,'200','visit','campaign1','2015-03-19'),
(9,'200','visit','campaign1','2015-03-19'),
(10,'200','visit','campaign2','2015-03-20'),
(11,'200','click','campaign1','2015-03-18'),
(12,'200','click','campaign1','2015-03-19'),
(13,'200','client','campaign1','2015-03-19'),
(14,'200','client','campaign2','2015-03-20')
;
SELECT `name`,
SUM(IF(`hit_type` = 'click',1,0)) as click ,
SUM(IF(`hit_type` = 'visit',1,0)) as visit,
SUM(IF(`hit_type` = 'client',1,0)) as client
FROM `statistics`
WHERE `name` IN('campaign1','campaign2')
GROUP BY `name`
ORDER BY `name`
这似乎[工作就好了(http://sqlfiddle.com/#!9/ cd772/1)。什么是你没有预料到的回报? – 2015-03-19 12:14:41
“独特”是什么? – 2015-03-19 12:17:47
yes功能正常,但结果不是我真正需要的,我需要删除重复的行,例如: (3,'100','click','campaign1','2015-03-18' ), (4,'100','点击','campaign1','2015-03-18'), 应该计算一次而不是两次。 – 2015-03-19 12:19:45