SQL: Важность учёта
29 мая 2016, 19:01
Задачка: Важность учёта
Дана таблица поступлений товаров на склады компании следующего формата:
create table incoming ( storage_id integer not null, category_id integer not null, quantity integer not null, time datetime not null );
Напишите запрос, который выведет список последнего поступившего количества для каждого склада и категории товара. Таблица должна быть отсортирована по номеру склада (по возрастанию) и категории товара (по возрастанию). Например, для следующей таблицы:
storage_id | category_id | quantity | time ----------------------------------------------------- 1 | 32 | 3 | 2015-03-17 13:55:32 1 | 32 | 8 | 2015-03-17 13:15:22 3 | 32 | 23 | 2015-03-17 14:45:57 1 | 7 | 13 | 2015-03-17 15:56:12 1 | 32 | 7 | 2015-03-17 17:05:37 2 | 17 | 1 | 2015-03-18 13:13:22 1 | 7 | 13 | 2015-03-19 21:53:17
запрос должен возвращать
storage_id | category_id | quantity ---------------------------------------------- 1 | 7 | 13 1 | 32 | 7 2 | 17 | 1 3 | 32 | 23
Решение
select storage_id,category_id,quantity from (select *, DATE_FORMAT(`time`,'%Y%m%d%H') as sortOnTime, CONCAT(DATE_FORMAT(`time`,'%Y%m%d'), storage_id ) as days from incoming ORDER BY sortOnTime DESC )s GROUP BY days ORDER BY storage_id , category_id
в запросах для production запросы вида select *,.. лучше не использовать а перечислять жёстко все необходимые поля
Твитнуть
Поделиться
Поделиться
Популярное
! данный запрос использует «файловую» сортировку это минус и его стоит учитывать.