Professional Documents
Culture Documents
Streak Calc
Streak Calc
UPDATE Transactions
SET Streak =
(SELECT COUNT(*)
FROM (SELECT T1.TxnId
FROM Transactions T1
WHERE T1.MerchantId = Transactions.MerchantId
AND T1.Date >= CURDATE() - INTERVAL n DAY
AND T1.Date <= CURDATE()
ORDER BY T1.Date DESC) As T2);
-----------------------------------------------------------------------------------
---------------------------------------
SET longest_streak = (SELECT MAX(streak)
FROM (SELECT DISTINCT t2.merchantid, (SUM(CASE WHEN
t2.amount > t.amount THEN 1 ELSE 0 END) + 1) as streak
FROM transactions t2
WHERE t2.date >= CURDATE() - INTERVAL 7 DAY
AND t2.date <= CURDATE()
AND t2.merchantid = t.merchantid
GROUP BY t2.merchantid
HAVING COUNT(*) > (SELECT AVG(COUNT(*))
FROM transactions
WHERE date >= CURDATE() - INTERVAL
7 DAY
AND date <= CURDATE()
AND merchantid = t.merchantid))
FROM transactions t;
-----------------------------------------------------------------------------------
---------------------------------------
-----------------------------------------------------------------------------------
------------------------------------------------------------------
Selecting Max streak and streak calculation.
Calculating median_count
SELECT
MerchantId,
COUNT(TxnId+RRN) as Transaction_Count,
PERCENTILE_DISC (0.5) WITHIN GROUP (ORDER BY Date DESC) OVER (PARTITION BY
MerchantId) as Median_Transaction_Count
FROM
Transactions
WHERE
Date >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) and date not in CURRENT_DATE()
GROUP BY
MerchantId;
-----------------------------------------------------------------------------------
---------------------------------
SELECT
CAST(PERCENTILE_CONT(0.5) WITHIN GROUP
(ORDER BY COUNT(TxnId))
OVER (PARTITION BY MerchantId
ORDER BY Date DESC ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)
AS MEDIAN_TRANSACTION_COUNT
FROM Transactions
WHERE Date >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
GROUP BY MerchantId, Date;
-----------------------------------------------------------------------------------
-------------------------------
Yesterday:
SELECT DATEADD(day, -1, CAST(GETDATE() AS date)) AS YesterdayDate;
-----------------------------------------------------------------------------------
----------------------
Date > DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)