У меня есть таблица типа,
date_1 | date_2
2018-12-08 | 2018-12-07
2018-12-09 | 2018-12-07
2018-12-13 | 2018-12-07
2018-12-16 | 2018-12-07
2018-12-14 | 2018-12-09
Таблица вывода должна выглядеть следующим образом:
date_2 | count_of_date_1_after_date_2
2018-12-07 | 5
2018-12-09 | 3
Я хочу количество date_1
'после' date_2
.
Я пытался и придумал этот ответ, но я не уверен, что это лучший способ сделать это.Есть ли лучший способ сделать это?
WITH
sample_table AS (
SELECT DATE('2018-12-08') AS date_1, DATE('2018-12-07') AS date_2, 'AAA' as uid UNION ALL
SELECT DATE('2018-12-09') AS date_1, DATE('2018-12-07') AS date_2, 'AAA' as uid UNION ALL
SELECT DATE('2018-12-13') AS date_1, DATE('2018-12-07') AS date_2, 'AAA' as uid UNION ALL
SELECT DATE('2018-12-16') AS date_1, DATE('2018-12-07') AS date_2, 'AAA' as uid UNION ALL
SELECT DATE('2018-12-14') AS date_1, DATE('2018-12-09') AS date_2, 'AAA' as uid
),
distinct_date_2 AS (
SELECT DISTINCT(date_2) AS distinct_date, uid FROM sample_table
)
SELECT distinct_date, COUNTIF(date_1 > distinct_date)
FROM sample_table
LEFT JOIN distinct_date_2
USING (uid)
GROUP BY distinct_date
ORDER BY distinct_date