@seropaski

SQL запрос для подсчета уникальных значений?

Имеется база с записями camp, random_id, action. camp может повторяться, так же как и random_id. action принимает только два значения 0\1. Необходимо извлечь количество уникальных random_id для каждого из значений action (0/1) и соответствующий им camp. Вывод сгруппировать по camp.

Что я только не пробовал. Просто посчитать уникальные random_id для каждого из значений action в отдельности можно запросом
SELECT camp, COUNT(DISTINCT random_id) FROM table WHERE action = 0 group by camp


Но чтобы все в совокупности просчитывалось - не выходит никак. Запрос итоговый
SELECT camp, SUM(IF(action = '0', 1, 0)) as uniq_null, SUM(IF(action = '1', 1, 0)) as uniq_one FROM (SELECT DISTINCT camp, random_id FROM table) t GROUP BY camp


выдает ошибку
#1054 - Unknown column 'action' in 'field list'


Либо
SELECT camp, SUM(IF(action = '0', 1, 0)) as uniq_null, SUM(IF(action = '1', 1, 0)) as uniq_one FROM table GROUP BY camp


Но такой запрос выдает количество НЕ уникальных значений.

Есть у кого предположения, как можно одним запросом получить нужные данные?

РЕШЕНИЕ ВОПРОСА:
SELECT camp, COUNT( DISTINCT random_id), action FROM table group by camp, action
  • Вопрос задан
  • 1746 просмотров
Решения вопроса 1
@dmitryKovalskiy
программист средней руки
SELECT camp, random_id,COUNT(1) FROM table WHERE action = 0 group by camp,randomId

Так попробуйте.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы