MySql: порядок в группе по не действует - PullRequest
0 голосов
/ 12 марта 2020

У меня есть такая таблица:

CREATE TABLE `test` (
`id`  int NOT NULL AUTO_INCREMENT ,
`sale_date`  date NOT NULL ,
`store_id`  varchar(64) NOT NULL ,
`money`  decimal(10,2) NOT NULL ,
`type`  tinyint(4) NOT NULL ,
PRIMARY KEY (`id`)
);

, и я вставляю данные, как показано ниже:

2020-03-12 111 500 1
2020-03-12 111 800 2
2020-03-12 222 900 2

Я хочу сгруппировать по sale_date и store_id , и упорядочить внутреннюю группу по введите des c, my sql выглядит так:

select * from(
select * from test order by type desc) r group by sale_date, store_id;

, но результат:

2020-03-12 111 500 1
2020-03-12 222 900 2

, и результат должен быть таким:

2020-03-12 111 800 2
2020-03-12 222 900 2

1 Ответ

0 голосов
/ 12 марта 2020

Используйте коррелированный подзапрос:

select t.* 
from test t
where t.type = (select max(type) from test where sale_date = t.sale_date and store_id = t.store_id)

См. Демоверсию . Результаты:

| id  | sale_date  | store_id | money | type |
| --- | ---------- | -------- | ----- | ---- |
| 2   | 2020-03-12 | 111      | 800   | 2    |
| 3   | 2020-03-12 | 222      | 900   | 2    |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...