Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DROP TABLE IF EXISTS tbl_trans;
- CREATE TABLE IF NOT EXISTS tbl_trans(
- transactions VARCHAR(10),
- history DATETIME,
- PRIMARY KEY (transactions,history)
- ) ENGINE=MyISAM CHARSET utf8;
- INSERT INTO tbl_trans
- VALUES
- ('TRANS-A','2017-08-30 08:00:00'),
- ('TRANS-A','2017-08-30 08:10:00'),
- ('TRANS-A','2017-08-30 08:20:00'),
- ('TRANS-A','2017-08-30 08:30:00'),
- ('TRANS-A','2017-08-30 08:40:00'),
- ('TRANS-A','2017-08-30 08:50:00'),
- ('TRANS-A','2017-08-30 09:00:00'),
- ('TRANS-B','2017-08-30 09:10:00'),
- ('TRANS-B','2017-08-30 09:20:00'),
- ('TRANS-B','2017-08-30 09:30:00'),
- ('TRANS-B','2017-08-30 09:40:00'),
- ('TRANS-B','2017-08-30 09:50:00'),
- ('TRANS-A','2017-08-30 10:00:00'),
- ('TRANS-A','2017-08-30 10:10:00'),
- ('TRANS-A','2017-08-30 10:20:00'),
- ('TRANS-A','2017-08-30 10:30:00'),
- ('TRANS-A','2017-08-30 10:40:00'),
- ('TRANS-C','2017-08-30 10:50:00'),
- ('TRANS-C','2017-08-30 11:00:00'),
- ('TRANS-C','2017-08-30 11:10:00'),
- ('TRANS-C','2017-08-30 11:20:00'),
- ('TRANS-A','2017-08-30 11:30:00'),
- ('TRANS-A','2017-08-30 11:40:00'),
- ('TRANS-C','2017-08-30 11:50:00'),
- ('TRANS-C','2017-08-30 12:00:00'),
- ('TRANS-B','2017-08-30 12:10:00'),
- ('TRANS-A','2017-08-30 12:20:00'),
- ('TRANS-A','2017-08-30 12:30:00'),
- ('TRANS-A','2017-08-30 12:40:00'),
- ('TRANS-A','2017-08-30 12:50:00');
- SELECT * FROM tbl_trans;
- +--------------+---------------------+
- | transactions | history |
- +--------------+---------------------+
- | TRANS-A | 2017-08-30 08:00:00 |
- | TRANS-A | 2017-08-30 08:10:00 |
- | TRANS-A | 2017-08-30 08:20:00 |
- | TRANS-A | 2017-08-30 08:30:00 |
- | TRANS-A | 2017-08-30 08:40:00 |
- | TRANS-A | 2017-08-30 08:50:00 |
- | TRANS-A | 2017-08-30 09:00:00 |
- | TRANS-A | 2017-08-30 10:00:00 |
- | TRANS-A | 2017-08-30 10:10:00 |
- | TRANS-A | 2017-08-30 10:20:00 |
- | TRANS-A | 2017-08-30 10:30:00 |
- | TRANS-A | 2017-08-30 10:40:00 |
- | TRANS-A | 2017-08-30 11:30:00 |
- | TRANS-A | 2017-08-30 11:40:00 |
- | TRANS-A | 2017-08-30 12:20:00 |
- | TRANS-A | 2017-08-30 12:30:00 |
- | TRANS-A | 2017-08-30 12:40:00 |
- | TRANS-A | 2017-08-30 12:50:00 |
- | TRANS-B | 2017-08-30 09:10:00 |
- | TRANS-B | 2017-08-30 09:20:00 |
- | TRANS-B | 2017-08-30 09:30:00 |
- | TRANS-B | 2017-08-30 09:40:00 |
- | TRANS-B | 2017-08-30 09:50:00 |
- | TRANS-B | 2017-08-30 12:10:00 |
- | TRANS-C | 2017-08-30 10:50:00 |
- | TRANS-C | 2017-08-30 11:00:00 |
- | TRANS-C | 2017-08-30 11:10:00 |
- | TRANS-C | 2017-08-30 11:20:00 |
- | TRANS-C | 2017-08-30 11:50:00 |
- | TRANS-C | 2017-08-30 12:00:00 |
- +--------------+---------------------+
- -- query untuk pengelompokan data berdasarkan `transactions` dalam urutan `history`
- SELECT
- IF(transactions!=@prev,@num:=@num+1,@num) AS grup,
- @prev:=transactions AS transactions,
- history
- FROM tbl_trans
- JOIN (SELECT @prev:=0,@num:=0) init
- ORDER BY history;
- +------+--------------+---------------------+
- | grup | transactions | history |
- +------+--------------+---------------------+
- | 1 | TRANS-A | 2017-08-30 08:00:00 |
- | 1 | TRANS-A | 2017-08-30 08:10:00 |
- | 1 | TRANS-A | 2017-08-30 08:20:00 |
- | 1 | TRANS-A | 2017-08-30 08:30:00 |
- | 1 | TRANS-A | 2017-08-30 08:40:00 |
- | 1 | TRANS-A | 2017-08-30 08:50:00 |
- | 1 | TRANS-A | 2017-08-30 09:00:00 |
- | 2 | TRANS-B | 2017-08-30 09:10:00 |
- | 2 | TRANS-B | 2017-08-30 09:20:00 |
- | 2 | TRANS-B | 2017-08-30 09:30:00 |
- | 2 | TRANS-B | 2017-08-30 09:40:00 |
- | 2 | TRANS-B | 2017-08-30 09:50:00 |
- | 3 | TRANS-A | 2017-08-30 10:00:00 |
- | 3 | TRANS-A | 2017-08-30 10:10:00 |
- | 3 | TRANS-A | 2017-08-30 10:20:00 |
- | 3 | TRANS-A | 2017-08-30 10:30:00 |
- | 3 | TRANS-A | 2017-08-30 10:40:00 |
- | 4 | TRANS-C | 2017-08-30 10:50:00 |
- | 4 | TRANS-C | 2017-08-30 11:00:00 |
- | 4 | TRANS-C | 2017-08-30 11:10:00 |
- | 4 | TRANS-C | 2017-08-30 11:20:00 |
- | 5 | TRANS-A | 2017-08-30 11:30:00 |
- | 5 | TRANS-A | 2017-08-30 11:40:00 |
- | 6 | TRANS-C | 2017-08-30 11:50:00 |
- | 6 | TRANS-C | 2017-08-30 12:00:00 |
- | 7 | TRANS-B | 2017-08-30 12:10:00 |
- | 8 | TRANS-A | 2017-08-30 12:20:00 |
- | 8 | TRANS-A | 2017-08-30 12:30:00 |
- | 8 | TRANS-A | 2017-08-30 12:40:00 |
- | 8 | TRANS-A | 2017-08-30 12:50:00 |
- +------+--------------+---------------------+
- -- query untuk mendapatkan nilai MIN() dan MAX() dari data yg sudah dibuat grup-nya
- SELECT
- transactions,
- MIN(history) AS startdate,
- MAX(history) AS enddate
- FROM
- (
- SELECT
- IF(transactions!=@prev,@grup:=@grup+1,@grup) AS grup,
- @prev:=transactions AS transactions,
- history
- FROM tbl_trans
- JOIN (SELECT @prev:=0,@grup:=0) init
- ORDER BY history
- )
- AS a_table
- GROUP BY grup
- ORDER BY grup,history;
- +--------------+---------------------+---------------------+
- | transactions | startdate | enddate |
- +--------------+---------------------+---------------------+
- | TRANS-A | 2017-08-30 08:00:00 | 2017-08-30 09:00:00 |
- | TRANS-B | 2017-08-30 09:10:00 | 2017-08-30 09:50:00 |
- | TRANS-A | 2017-08-30 10:00:00 | 2017-08-30 10:40:00 |
- | TRANS-C | 2017-08-30 10:50:00 | 2017-08-30 11:20:00 |
- | TRANS-A | 2017-08-30 11:30:00 | 2017-08-30 11:40:00 |
- | TRANS-C | 2017-08-30 11:50:00 | 2017-08-30 12:00:00 |
- | TRANS-B | 2017-08-30 12:10:00 | 2017-08-30 12:10:00 |
- | TRANS-A | 2017-08-30 12:20:00 | 2017-08-30 12:50:00 |
- +--------------+---------------------+---------------------+
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement