javafxdev,
nie do końca, bo miały to być rekordy sortowane według daty, a nie po prostu top/last z grupy.
CREATE TABLE `xy` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`x` VARCHAR(255) NOT NULL,
`data` DATE NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
INSERT INTO `xy` VALUES (1, 'xxx', '2016-01-01');
INSERT INTO `xy` VALUES (2, 'yyy', '2016-01-02');
INSERT INTO `xy` VALUES (3, 'xxx', '2016-01-03');
INSERT INTO `xy` VALUES (4, 'yyy', '2016-01-04');
INSERT INTO `xy` VALUES (5, 'xxx', '2016-01-05');
INSERT INTO `xy` VALUES (6, 'yyy', '2016-01-06');
INSERT INTO `xy` VALUES (7, 'xxx', '2016-01-07');
INSERT INTO `xy` VALUES (8, 'yyy', '2016-01-08');
INSERT INTO `xy` VALUES (9, 'xxx', '2016-01-09');
INSERT INTO `xy` VALUES (10, 'yyy', '2016-01-10');
INSERT INTO `xy` VALUES (11, 'xxx', '2016-01-11');
INSERT INTO `xy` VALUES (12, 'xxx', '2016-01-12');
INSERT INTO `xy` VALUES (13, 'zzz', '2016-01-13');
INSERT INTO `xy` VALUES (14, 'zzz', '2016-01-14');
5 rekordów z każdej grupy sortowane według daty desc:
SELECT x3.x,x3.DATA FROM (SELECT x1.*, (SELECT COUNT(*) FROM xy AS x2 WHERE x1.data<=x2.DATA AND x1.x=x2.x) AS wiersz FROM xy AS x1) x3
WHERE wiersz <=5 ORDER BY x, DATA DESC;