-1
Как я могу рассчитать, сколько уникальных (hit_type
= click
) за campaign
в следующем сценарии? :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). Что возвращается, чего вы не ожидаете? –
«Уникальный» какой? –
Да, функциональность работает нормально, однако результат не тот, который мне действительно нужен, мне нужно удалить повторяющиеся строки, например: (3, '100', 'click', 'campaign1', '2015-03-18'), (4, '100', 'click', 'campaign1', '2015-03-18'), следует рассчитывать один раз не дважды. –