Дана таблица с логом показов рекламы в ленте: feed_events ( uuid: str, timestamp: int, event: str ), где uuid — id пользователя, timestamp — Unix-время события, event — тип события. В поле event может быть одно из трех значений: 'open' — открытие ленты, 'show' — показ рекламы, 'click' — клик в рекламу. Выведите 10 uuid'ов c наибольшим CTR (CTR (Click Through Rate) - отношение числа кликов в рекламу к числу показов рекламы). Для каждого uuid'a отберите только те события, которые были во времени после первого залогированного для него события 'open'. Результат должен быть отсортирован в порядке убывания CTR (округлите его до двух знаков после запятой). Если у разных uuid'ов CTR совпадает, упорядочьте их лексикографически. Запрос должен быть написан на диалекте SQLite3.
SELECT uuid, ROUND(CAST(COUNT(CASE WHEN event = 'click' THEN 1 END) AS FLOAT)/COUNT(CASE WHEN event = 'show' THEN 1 END), 2) AS ctr FROM feed_events WHERE event IN ('open', 'show', 'click') AND timestamp > ( SELECT MIN(timestamp) FROM feed_events AS f WHERE f.uuid = feed_events.uuid AND f.event = 'open' ) GROUP BY uuid ORDER BY ctr DESC, uuid ASC LIMIT 10;