Использование SQL в Domo для применения нескольких групп или фильтров
Я пытаюсь отфильтровать уникальные идентификаторы пользователя, а затем посмотреть, какие идентификаторы имеют значение>1 в другом столбце. Я пробовал почти каждый пример из SQL - выбирая уникальные значения из одного столбца, затем фильтруя по другому и по крайней мере 1 или еще двум сайтам, но я не могу найти подходящие ссылки для этого, поскольку в любом случае это оказалось немного не связанным.
Пример соответствующих столбцов моего набора данных:
+---------+-----------+
| UserIDs | EventType |
+---------+-----------+
| 100 | Start |
| 100 | Start |
| 100 | Finish |
| 100 | Finish |
| 200 | Start |
| 200 | Start |
| 200 | Start |
| 200 | Finish |
| 200 | Finish |
| 200 | Finish |
| 300 | Start |
| 400 | Start |
| 400 | Finish |
+---------+-----------+
Я пытаюсь выяснить, сколько пользователей запустили EventType-Finish более одного раза. Данные, которые я хотел бы получить из приведенного выше примера:
+------------------------------------------------+
| Total # of students that battled more than once|
+------------------------------------------------+
| 2 |
+------------------------------------------------+ *edited*
Ни один из Group By
вещи кажутся правильными, потому что это просто сжало бы другие строки друг в друга?
Для записи я очень новичок в SQL
и программирование в целом, поэтому постарайтесь не быть слишком техническим в своем ответе. Каждый раз, когда я отдаленно думаю о том, что решил эту проблему, я запускаю ее, и она выдает мне синтаксические ошибки, поэтому я понятия не имею, куда еще обратиться.
Извините, ребята, я написал результат неправильно, на самом деле я просто ищу количество студентов, которые вызвали Finish
больше чем единожды. Кроме того, что бы я использовал вместо имени таблицы, например: FROM "TABLE"
поскольку у Домо есть какой-то странный способ разрушить иерархию. Для контекста, моя таблица называется "Данные метрики", поэтому попытка ввести ее в имя таблицы обычно преобразует data
в SQL
код.
2 ответа
Попробуйте этот ответ,
SELECT UserId,COUNT(1) [# of Finishes]
FROM Your_Table
WHERE EventType='Finish'
GROUP BY UserID
HAVING COUNT(1)>1
Надеюсь, поможет.
Я хотел бы сделать некоторую условную агрегацию с помощью case
выражения
SELECT
UserIDs [UserID],
SUM(CASE(EventType) WHEN 'Finish' THEN 1 ELSE 0 END) [# of Finishes]
FROM <table> GROUP BY UserIDs
HAVING SUM(CASE(EventType) WHEN 'Finish' THEN 1 ELSE 0 END) > 1
Результат:
UserID # of Start
100 2
200 3