Я новичок в sql и мне нужна ваша помощь. У меня есть данные результатов теста в базе данных, и я хочу получить последние результаты.
----------------------------------------------------------------------------------
| ID | TestDate | App | Service | Environment | Critical | High | Medium | Low |
|----------------------------------------------------------------------------------|
| 1 | 2020-03-01 | app | service-a | sit | 1 | 2 | 3 | 5 |
| 2 | 2020-03-02 | app | service-b | sit | 0 | 3 | 2 | 1 |
| 3 | 2020-03-03 | app | service-a | sit | 0 | 1 | 5 | 3 |
Я хочу получить только последний результат для service-a и затем результат для service-b. Я пытался
SELECT MAX(TestDate), App, Service, Environment, Critical, High, Medium, Low from table
GROUP BY TestDate, App, Service, Environment, Critical, High, Medium, Low;
, но он по-прежнему возвращает оба значения service-a. Удаление некоторых столбцов в GROUP BY
приведет к ошибке неагрегированного столбца.
Вот некоторые примеры данных, с которыми вы можете проверить.
CREATE TABLE IF NOT EXISTS `test_results` (
`id` INT NOT NULL AUTO_INCREMENT,
`app` VARCHAR(10) NULL,
`environment` VARCHAR(45) NULL,
`service` VARCHAR(256) NULL,
`service_version` VARCHAR(20) NULL,
`test_date` DATETIME NOT NULL,
`critical` VARCHAR(256) NULL,
`high` VARCHAR(256) NULL,
`medium` VARCHAR(256) NULL,
`low` VARCHAR(256) NULL,
PRIMARY KEY (`id`));
INSERT INTO `test_results` (`app`, `environment`, `service`, `service_version`, `test_date`, `critical`, `high`, `medium`, `low`)
VALUES ("app1", "sit", "service-a", "1.0.0", "2020-03-01 01:03:08", 1, 2, 3, 4),
("app1", "sit", "service-a", "1.0.1", "2020-03-03 01:03:08", 5, 7, 3, 1),
("app1", "sit", "service-b", "1.1.2", "2020-03-02 01:03:08", 5, 9, 6, 4),
("app1", "sit", "service-c", "1.0.5", "2020-03-02 01:03:08", 3, 1, 9, 4);
И скрипка того же
РЕДАКТИРОВАТЬ: Добавлена скрипка