Рассмотрим таблицу следующей формы (wallet, client, date)
, где wallet
и client
равны strings
, а date
- любая дата до сегодняшнего дня.
Скажем, каждый хочет получить текущую сумму как уникальных клиентов, так и клиентов за каждый месяц текущего года, сгруппированных по кошельку и месяцу.
Я пробовал несколько вещей, включая разбиение, но просто не могу заставить его работать должным образом.
Результат будет примерно таким:
+------------+---------+------------+---------+
| Wallet | Unique | Count | Month |
+------------+---------+------------+---------+
| Wallet1 | 2 | 5 | 1 | - For < 01022019
+------------+---------+------------+---------+
| Wallet1 | 3 | 7 | 2 | - For < 01032019
+------------+---------+------------+---------+
И так далее. Я перепробовал много вещей, даже разделение, но у меня ничего не получается. Мне удалось сделать это только в нескольких небольших запросах, использующих ГДЕ ниже даты, что абсолютно ужасно, например.
INSERT INTO
tmp_tbl_filtered
SELECT
[Wallet],
COUNT(DISTINCT [Client]) AS [unique],
COUNT([Client]) AS [count],
1 AS [month]
FROM
tmp_tbl
WHERE [Date] < '20190201'
GROUP BY [Wallet]
ORDER BY [Wallet]
INSERT INTO
tmp_tbl_filtered
SELECT
[Wallet],
COUNT(DISTINCT [Client]) AS [unique],
COUNT([Client]) AS [count],
2 AS [month]
FROM
tmp_tbl
WHERE [Date] < '20190301'
GROUP BY [Wallet]
ORDER BY [Wallet]