I'd like to get the ID of a dataset for each category (my grouping column) which has the smallest "order" column.
Here a set of data to explain my thoughts:
CREATE TABLE DATAS (
ID INT(2) ,
CATEGORY INT(2) ,
ORD INT(1)
);
INSERT INTO DATAS (ID, CATEGORY, ORD)
VALUES (1, 1, 3), (2, 1, 2), (3, 1, 1), (4, 2, 1), (5, 2, 2);
Result expected:
ID CATEGORY
-------------
3 1
4 2
Bonus question, how to retrieve just one ID even if there's some duplicates for the "order" column (ORD) ?
INSERT INTO DATAS (ID, CATEGORY, ORD)
VALUES (1, 1, 3), (2, 1, 2), (3, 1, 1), (4, 2, 1), (5, 2, 1), (6, 3, NULL), (7, 3, NULL);
Result expected (using a MIN for example or other suggestion):
ID CATEGORY
-------------
3 1
4 2
6 3
Oracle or MySQL queries are welcomed, thanks a lot.
Best Answer
Oracle solution to both problems:
Generic solution to both problems:
Oracle DDL/DML: