Created
August 31, 2017 06:29
-
-
Save hidayat365/b3281790390f481a5de66191e80845e9 to your computer and use it in GitHub Desktop.
Grouping by transactions using custom group
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- --------------------------------------- | |
-- Generate Data | |
-- --------------------------------------- | |
CREATE table trans_history AS | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 08:00:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 08:10:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 08:20:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 08:30:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 08:40:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 08:50:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 09:00:00' AS history UNION ALL | |
SELECT 'TRANS-B' AS transactions, '2017-08-30 09:10:00' AS history UNION ALL | |
SELECT 'TRANS-B' AS transactions, '2017-08-30 09:20:00' AS history UNION ALL | |
SELECT 'TRANS-B' AS transactions, '2017-08-30 09:30:00' AS history UNION ALL | |
SELECT 'TRANS-B' AS transactions, '2017-08-30 09:40:00' AS history UNION ALL | |
SELECT 'TRANS-B' AS transactions, '2017-08-30 09:50:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 10:00:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 10:10:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 10:20:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 10:30:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 10:40:00' AS history UNION ALL | |
SELECT 'TRANS-C' AS transactions, '2017-08-30 10:50:00' AS history UNION ALL | |
SELECT 'TRANS-C' AS transactions, '2017-08-30 11:00:00' AS history UNION ALL | |
SELECT 'TRANS-C' AS transactions, '2017-08-30 11:10:00' AS history UNION ALL | |
SELECT 'TRANS-C' AS transactions, '2017-08-30 11:20:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 11:30:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 11:40:00' AS history UNION ALL | |
SELECT 'TRANS-C' AS transactions, '2017-08-30 11:50:00' AS history UNION ALL | |
SELECT 'TRANS-C' AS transactions, '2017-08-30 12:00:00' AS history UNION ALL | |
SELECT 'TRANS-C' AS transactions, '2017-08-30 12:10:00' AS history UNION ALL | |
SELECT 'TRANS-C' AS transactions, '2017-08-30 12:20:00' AS history UNION ALL | |
SELECT 'TRANS-C' AS transactions, '2017-08-30 12:30:00' AS history UNION ALL | |
SELECT 'TRANS-B' AS transactions, '2017-08-30 12:40:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 12:50:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 13:00:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 13:10:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 13:20:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 13:30:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 13:40:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 13:50:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 14:00:00' AS history UNION ALL | |
SELECT 'TRANS-A' AS transactions, '2017-08-30 14:10:00' AS history UNION ALL | |
SELECT 'TRANS-D' AS transactions, '2017-08-30 14:20:00' AS history UNION ALL | |
SELECT 'TRANS-E' AS transactions, '2017-08-30 14:30:00' AS history UNION ALL | |
SELECT 'TRANS-E' AS transactions, '2017-08-31 14:30:00' AS history UNION ALL | |
SELECT 'TRANS-E' AS transactions, '2017-09-01 14:30:00' AS history UNION ALL | |
SELECT 'TRANS-E' AS transactions, '2017-09-02 14:30:00' AS history UNION ALL | |
SELECT 'TRANS-E' AS transactions, '2017-09-03 14:30:00' AS history UNION ALL | |
SELECT 'TRANS-E' AS transactions, '2017-09-04 14:30:00' AS history UNION ALL | |
SELECT 'TRANS-E' AS transactions, '2017-09-05 14:30:00' AS history UNION ALL | |
SELECT 'TRANS-E' AS transactions, '2017-09-06 14:30:00' AS history UNION ALL | |
SELECT 'TRANS-E' AS transactions, '2017-09-07 14:30:00' AS history UNION ALL | |
SELECT 'TRANS-E' AS transactions, '2017-09-08 14:30:00' AS history UNION ALL | |
SELECT 'TRANS-E' AS transactions, '2017-09-09 14:30:00' AS history UNION ALL | |
SELECT 'TRANS-E' AS transactions, '2017-09-10 14:30:00' AS history ; | |
-- --------------------------------------- | |
-- Query Data | |
-- Result: please see comment | |
-- --------------------------------------- | |
select min(transactions) transactions | |
, min(history) awal, max(history) akhir, count(history) jml_data | |
from ( | |
select d1.transactions, d1.history | |
, @baris3 := @baris3 + case when d1.transactions = d2.transactions then 0 else 1 end grp | |
from ( | |
select transactions, history | |
, @baris1:=@baris1+1 baris | |
from trans_history | |
join (select @baris1:=0) t1 | |
order by history | |
) d1 | |
left join ( | |
select transactions, history | |
, @baris2:=@baris2+1 baris | |
from trans_history | |
join (select @baris2:=1) t2 | |
order by history | |
) d2 | |
on d1.baris = d2.baris | |
join (select @baris3:=0) t3 | |
order by d1.history, d1.transactions | |
) d3 | |
group by grp | |
Author
hidayat365
commented
Aug 31, 2017
•
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment