Получение количества столбцов путем группировки - PullRequest
0 голосов
/ 14 июня 2019

У меня есть таблица activities, которая содержит информацию, подобную которой user выполнила какую action.где каждый пользователь может выполнять несколько действий.

Я хочу выбрать из таблицы activities количество выполненных действий.

Я написал запрос типа

  SELECT COUNT(*) FROM (
   SELECT MAX(action_id) AS action_id
   FROM activities
   GROUP BY participant_id
   ) T
  GROUP BY action_id

Это работает, но я не уверен, что это лучший способ решить проблему.

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Ваш вопрос довольно двусмысленный относительно того, чего вы хотите достичь.Решение выглядит как агрегация по action_id .Следующее подсчитывает количество строк и количество участников:

SELECT action_id,
       COUNT(*) as num_actions,
       COUNT(DISTINCT participant_id) as num_participants
FROM activities
GROUP BY action_id;

Если вы хотите количество действий на участника , оно будет выглядеть так:

SELECT participant_id,
       COUNT(*) as num_actions
FROM activities
GROUP BY participant_id;
0 голосов
/ 14 июня 2019

Это дает вам ошибочные данные.Вы не получаете «количество выполненных действий». , но количество каждого действия, которое имеет наибольший идентификатор действий для пользователей

Удалитьparticipant_id часть и ваш запрос может быть упрощен (и исправлен):

SELECT action_id,
       COUNT(*) AS Count
FROM activities
GROUP BY action_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...