Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как такой монстро запрос упростить? Я слаб в процедурах... 
:(
    Опции темы
Muerto
Дата 10.8.2011, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



Код

SELECT (SELECT AVG( percentage ) AS avg
FROM  `bank_percentage` WHERE
maslul =  'קבועה צמודה' AND (month BETWEEN 0 AND 60)) as a
,(SELECT AVG( percentage ) AS avg
FROM  `bank_percentage` WHERE
maslul =  'קבועה צמודה' AND (month BETWEEN 61 AND 120)) as b
, (SELECT AVG( percentage ) AS avg
FROM  `bank_percentage` WHERE
maslul =  'קבועה צמודה' AND (month BETWEEN 121 AND 144)) as c
, (SELECT AVG( percentage ) AS avg
FROM  `bank_percentage` WHERE
maslul =  'קבועה צמודה' AND (month BETWEEN 145 AND 180)) as d
, (SELECT AVG( percentage ) AS avg
FROM  `bank_percentage` WHERE
maslul =  'קבועה צמודה' AND (month BETWEEN 181 AND 216)) as e
, (SELECT AVG( percentage ) AS avg
FROM  `bank_percentage` WHERE
maslul =  'קבועה צמודה' AND (month BETWEEN 217 AND 240)) as f
, (SELECT AVG( percentage ) AS avg
FROM  `bank_percentage` WHERE
maslul =  'קבועה צמודה' AND (month BETWEEN 241 AND 300)) as g
, (SELECT AVG( percentage ) AS avg
FROM  `bank_percentage` WHERE
maslul =  'קבועה צמודה' AND (month BETWEEN 301 AND 1000)) as h


Суть думаю понятна...


--------------------
user posted image
PM MAIL   Вверх
CruorVult
Дата 10.8.2011, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 1
Всего: 28



Цитата(Muerto @  10.8.2011,  16:29 Найти цитируемый пост)
month BETWEEN 0 AND 60

это что?

Если применить какой-нибудь общий принцип построения этого условия то можно сократить используя GROUP BY
PM MAIL Skype   Вверх
Muerto
Дата 10.8.2011, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



Есть банк, у него в ипотеке есть программы разные... это одна из них...

Нужно вывести то что выводит этот запрос...
А именно AVG процента который накладывается на платеж...

Ну в общем эт все не интересные детали - главное что:

Есть месяца, всего 360
у каждого месяца есть percentage...

нужно получить AVG от 0 до 60, от 61 до 120 и тп.

Это сообщение отредактировал(а) Muerto - 10.8.2011, 20:17


--------------------
user posted image
PM MAIL   Вверх
rodnover
Дата 11.8.2011, 07:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 7.4.2009

Репутация: 2
Всего: 10



Код

select avg(if(month BETWEEN 0 AND 60, percentage, null))
    , avg(if(month BETWEEN 61 AND 120, percentage, null))
    , avg(if(month BETWEEN 121 AND 144, percentage, null))
    , avg(if(month BETWEEN 145 AND 180, percentage, null))
    , avg(if(month BETWEEN 181 AND 216, percentage, null))
    , avg(if(month BETWEEN 217 AND 240, percentage, null))
    , avg(if(month BETWEEN 241 AND 300, percentage, null))
    , avg(if(month BETWEEN 301 AND 1000, percentage, null))
from `bank_percentage`
where maslul =  'קבועה צמודה'


Типа такого пойдёт?
PM MAIL   Вверх
Muerto
Дата 11.8.2011, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



Цитата(rodnover @ 11.8.2011,  07:38)
Код

select avg(if(month BETWEEN 0 AND 60, percentage, null))
    , avg(if(month BETWEEN 61 AND 120, percentage, null))
    , avg(if(month BETWEEN 121 AND 144, percentage, null))
    , avg(if(month BETWEEN 145 AND 180, percentage, null))
    , avg(if(month BETWEEN 181 AND 216, percentage, null))
    , avg(if(month BETWEEN 217 AND 240, percentage, null))
    , avg(if(month BETWEEN 241 AND 300, percentage, null))
    , avg(if(month BETWEEN 301 AND 1000, percentage, null))
from `bank_percentage`
where maslul =  'קבועה צמודה'


Типа такого пойдёт?

Однозначно улучшение  smile 


--------------------
user posted image
PM MAIL   Вверх
CruorVult
Дата 11.8.2011, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 1
Всего: 28



а вообще, если  месяца не будут изменяться то можно создать поле для группировки по месяцам и тогда запрос будет выглядеть так 
Код

select avg(percentage)
from `bank_percentage`
where maslul =  'קבועה צמודה'
group by month_group


Это сообщение отредактировал(а) CruorVult - 11.8.2011, 11:46
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0479 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.