@Lopus

Как сгруппировать результат, если уже есть одна группировка?

Есть таблица статистики (уникальности на полях нет):
item_id, user_id
Мне надо получить количество строк item_id не учитывая количества user_id на один item_id.
Т.е. если на один и тот же item_id приходится две строки с одинаковым user_id, то их нужно считать как одну.
Вот к чему пока дошёл:
select item_id, user_id, count(*) as cnt from item_user group by item_id, user_id ORDER BY item_id ASC

В таком случае показывает:
item_id | user_id | count
10 | 1 | 1
10 | 2 | 25
10 | 3 | 1
ну и т.д.
Осталось к этому результату добавить еще group by item_id и посчитать кол-во строк.
Должно получиться item_id: 10, count: 3
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
longclaps
@longclaps
SELECT
  item_id,
  COUNT(*) AS cnt
FROM (SELECT DISTINCT *
      FROM item_user) AS T
GROUP BY item_id;

или еще проще:
SELECT
  item_id,
  COUNT(DISTINCT user_id) AS cnt
FROM item_user
GROUP BY item_id;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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