У меня есть таблица, которая не имеет первичного ключа и разбита по дате;столбцы, подобные этому:
1. user_id
2. device
3. region
4. datetime
5. and other columns
Содержит события, генерируемые пользователем из игры на сайте, они запускаются каждую секунду.Я хочу вернуть пакет со всеми событиями (включая повторяющиеся строки), сгенерированными первыми 6 пользователями (вверху таблицы) в текущий день, которые проверяют условия:
для региона = США
- one user from iOS
- one user from android
- one user from PC
для региона = ЕС
- one user from iOS
- one user from android
- one user from PC
Можете ли вы предоставить пример кода, с которого я должен начать?Мой друг предложил кое-что о RANK (), но я никогда не использовал его.
Спасибо!
SELECT * FROM
(SELECT user_id,
event_post_time,
device,
region,
COUNT(DISTINCT player_id) over (partition by player_id) as ct_pid,
COUNT(DISTINCT region) over (partition by region) as ct_region,
COUNT(DISTINCT device) over (partition by device) as ct_device
FROM events
WHERE event_post_time = current_date()
AND region IN ('EU','US')
AND device IN ('ios','android','pc')) e
WHERE ct_pid <= 6
AND ct_region <= 2
AND ct_device <= 3
ORDER BY player_id
Добавление фиктивных данных в SQLFiddle и ожидаемый результат:
user_id device region date_generated
1 ios EU 22-05-18
1 ios EU 22-05-18
1 ios EU 22-05-18
4 ios US 22-05-18
4 ios US 22-05-18
2 android EU 22-05-18
2 android US 22-05-18
4 pc EU 22-05-18
4 pc EU 22-05-18
4 pc EU 22-05-18
5 pc US 22-05-18