![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
krinart |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 10.4.2008 Где: Донецк Репутация: нет Всего: нет |
Здравствуйте, столкнулся я с одной задачкой, буду очень признателен за любую помощь.
Есть таблица следующей структуры:
Где могут хранится, к примеру, такие данные:
Существует ли возможность одним запросом получить по каждому товару такие данные: по каждой стране максимальное и минимальное значение и периоды, когда эти значения появились. То есть в результате должно получиться чтото вроде такого
Конечно, сначала я сделал в лоб, цикл по товарам и внутренним циклом по странам. Но так как стран около 150, а товаров около 8, получается около 1200 запросов - что есть очень не хорошо. Буду признателен за любую помощь. Это сообщение отредактировал(а) krinart - 26.8.2011, 15:09 |
||||||
|
|||||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
А вы хоть что нибудь по SQL читать пробовали, прежде чем программировать начали?
Откройте главу про группировку. Первый же пример - ваш.
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
krinart |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 10.4.2008 Где: Донецк Репутация: нет Всего: нет |
Zloxa, смысл не в том, чтобы найти максимально/минимально возможный период. Мне нужно найти период, где встречается это максимальное/минимальное значение.
|
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
сорри, не правильно понял. Какая платформа? -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
krinart |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 10.4.2008 Где: Донецк Репутация: нет Всего: нет |
Zloxa, mysql
|
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
stff бабушкин метод В кратце суть - value преобразуем в строку, дополняем лидирующими нулями, чтобы строковая сортировка совпадала с числовой, в конец строки конкатенируем значение периода, считаем аггрегат min/max, из полученного значения ихзвлекаем хвостик периода. Это если нам надо получить одно, любое значение из многих возможных минимальных/максимальных value. Если нам надо поулчить все такие значения - не понятно по каким критериям объединять минимальные и максимальные. Это сообщение отредактировал(а) Zloxa - 26.8.2011, 16:51 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
krinart |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 10.4.2008 Где: Донецк Репутация: нет Всего: нет |
Zloxa, спасибо за наводку, попробую. А какого-нибудь более "академического" метода не существует? Больше похоже на какие-то ужасные костыли, чем на грамотный запрос.
|
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
но это тоже далеко не "академическое". Академическое куда менее читабельно и производительно. Упоминается, разжовывается по результатам поиска, не работает, если может быть более одного минимального или же максимального значения. Это сообщение отредактировал(а) Zloxa - 26.8.2011, 16:54 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
krinart |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 10.4.2008 Где: Донецк Репутация: нет Всего: нет |
Zloxa, спасибо большое за "бабушкин метод"! это прекрасное решение!
Есть ещё вопрос. Теперь требуется находить "прирост" у каждой страны по каждому товару, где вычисляется разница значений последнего и предпоследнего периодов. То есть результат должен получиться такой:
Существует ли для этой задачи решение? |
|||
|
||||
Zloxa |
|
||||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Если я правильно понял, и последниее, предпоследнее ранжируются периодом... Последнее значение получаем бабушкиным методом предпоследнее - кореллированным скалярным подзапросом строковые функции mysql не знаю на вскидку, но если псевдокодом, то как то - так:
Это сообщение отредактировал(а) Zloxa - 26.8.2011, 17:10 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
||||
|
|||||
krinart |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 10.4.2008 Где: Донецк Репутация: нет Всего: нет |
Zloxa, огромное спасибо за два прекрасных решения!
Это сообщение отредактировал(а) krinart - 29.8.2011, 09:14 |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |