Имеется следующая таблица -
CREATE TABLE help (user_id INT, source VARCHAR(10), watch INT, download INT);
С таким содержимым:
INSERT INTO help (user_id, source, watch, download) VALUES (1, 'netflix', 1, 0), (2, 'netflix', 1, 0), (3, 'amazon', 1, 1), (1, 'amazon', 1, 1), (2,'ivi', 1, 0), (1, 'netflix', 1,1);
В таблице содержатся данные какой "канал" смотрели пользователи (бинарный флаг watch) и скачивали (download).
Необходимо для каждого канала вывести количество уникальных пользователей, которые его посмотрели, и кол-во уникальных пользователей, которые что-то скачали.
Оформить нужно одним запросом.
Можно написать так -
SELECT SUM(watch) as w, SUM(download) as d FROM help GROUP BY source;
Но тогда в результатах будут дубликаты. Хочу реализовать следующее:
SELECT (SELECT COUNT(DISTINCT(user_id) FROM help WHERE watch=1 and source=&&&) as w, (SELECT COUNT(DISTINCT(user_id) FROM help WHERE download=1 and source=&&&) as d FROM help GROUP BY source;
Вопрос в следующем - как мне во вложенных SELECT`ах искать записи только относящиеся к внешнему GROUP BY? Что надо поставить вместо &&&? Или возможно реализовать иначе, но одним запросом?