Задать вопрос
Express777
@Express777

Как перевести вертикальную таблицу в горизонтальную?

Что имеется?
Имеется таблица такого вида
+----+--------------+-------+--------------+
| id | product_name | count | warehouse_id |
+----+--------------+-------+--------------+
|  1 | Puperproduct |    10 |            1 |
|  2 | Puperproduct |    15 |            2 |
|  3 | Puperproduct |    12 |            3 |
+----+--------------+-------+--------------+


Что нужно получить?
Нужно получить макс и мин количество товаров с ихними складами.
+-----+---------------+-----------+------------------+-----------+------------------+
| id  | product_name  | min_count | min_warehouse_id | max_count | max_warehouse_id |
+-----+---------------+-----------+------------------+-----------+------------------+
|  1  | Puperproduct  |        10 |                1 |        15 |                2 |
+-----+---------------+-----------+------------------+-----------+------------------+


Что у меня получилось?
Получилось:
select 
	id
	, product_name
	, min(count) as min_count
	, max(count) as max_count
from table
group by product_name

+----+--------------+-----------+-----------+
| id | product_name | min_count | max_count |
+----+--------------+-----------+-----------+
|  1 | Puperproduct |        10 |        15 |
+----+--------------+-----------+-----------+


Как взять ид складов? Количество записей около 800К. Mysql 5.5
  • Вопрос задан
  • 1475 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Express777
@Express777 Автор вопроса
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@dmitryKovalskiy
программист средней руки
Поскольку в mysql нет инструкции PIVOT, есть такие вот решения - stackoverflow.com/questions/7674786/mysql-pivot-table
Ответ написан
Комментировать
oleg_agapov
@oleg_agapov
Data analyst, Business Intelligence
Это называется groupwise maximum (или minimum, зависит от задачи).
Пример есть вот тут stackoverflow.com/questions/755918/simple-query-to...
К сожалению, не могу подсказать, как реализовать на МуСкуле ибо делал такое только в Оракле (там есть замечательная функция row_number()).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы