Как проверить, если три даты в столбце таблицы имеют непрерывные месяцы
У меня есть таблица с именем столбца date_tran, который показывает дату, когда пользователь совершил любую транзакцию. Есть ли способ, как я могу проверить, если 3 транзакции сделаны пользователем в том же месяце или 3 непрерывных месяца?
я использую следующий фрагмент:
SELECT CUST_ID, DATE_TRAN FROM FAKE_CUST F WHERE
EXISTS(
SELECT 1 from FAKE_CUST where (TO_CHAR(DATE_TRAN,'MM') = TO_CHAR(F.DATE_TRAN,'MM')-1 OR TO_CHAR(DATE_TRAN,'MM') = TO_CHAR(F.DATE_TRAN,'MM')) AND
CUST_ID= F.CUST_ID AND TO_CHAR(DATE_TRAN,'YYYY')=TO_CHAR(F.DATE_TRAN,'YYYY'))
and exists(
SELECT 1 from FAKE_CUST where (TO_CHAR(DATE_TRAN,'MM') = TO_CHAR(F.DATE_TRAN,'MM')-2 OR TO_CHAR(DATE_TRAN,'MM') = TO_CHAR(F.DATE_TRAN,'MM')) AND
CUST_ID= F.CUST_ID AND TO_CHAR(DATE_TRAN,'YYYY')=TO_CHAR(F.DATE_TRAN,'YYYY'))
но показывает все записи в таблице, а не требуемый результат.
1 ответ
Чтобы получить 3 транзакции совершаются пользователем в одном месяце
Что-то вроде... Группировать по getmonth (DATE_TRN), имеющему count (getmonth (DATE_TRN))>> = 3
MySql:
ВЫБЕРИТЕ CUST_ID, DATE_TRAN ОТ XXX, где cust_id in (ВЫБЕРИТЕ cust_id из XXX группы по DATE_FORMAT(DATE_TRAN, '%m'), имеющему счет (DATE_FORMAT(DATE_TRAN, '%m')) > 2)
Чтобы получить 3 транзакции совершаются пользователем за 3 мин. Месяца
Группа По getmonth (DATE_TRN), имеющая count (getmonth (DATE_TRN))>> 1, count(getmonth(DATE_TRN)-1) > 1, count(getmonth(DATE_TRN)-2) > 1