You are on page 1of 1

-- borrowed from https://stackoverflow.

com/q/7745609/808921

CREATE TABLE IF NOT EXISTS `order` (


`order_id` varchar(6) NOT NULL,
`customer_id` varchar(3) NOT NULL,
`order_dt`varchar(30) NOT NULL,
`product_id` varchar(3) NOT NULL,
`qty` varchar(4) NOT NULL,
PRIMARY KEY (`order_id`)
) DEFAULT CHARSET=utf8;
INSERT INTO `order` (`order_id`, `customer_id`, `order_dt`,`product_id`,`qty`)
VALUES
('O1', 'C1', '01-jan-2000','P1','10'),
('O2', 'C2', '01-jan-2002','P2','15'),
('O3', 'C3', '01-apr-2002','P3','17'),
('O4', 'C4', '01-apr-2003','P1','20'),
('O5', 'C4', '01-jan-2006','P2','1'),
('O6', 'C1', '01-may-2006','P5','7');

set @ck1 ="";


set @rn1 =1;
set @qty ="";

SELECT customer_id,
qty,
rank
FROM
(
SELECT customer_id,
qty,
@rn1 := if(@ck1=customer_id, if(@qty=qty, @rn1, @rn1+1),1) as rank,
@ck1 := customer_id,
@qty := qty
FROM
(
SELECT customer_id,
qty
FROM `order`
ORDER BY customer_id,qty
) A
) B;

You might also like