Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запрос с суммированием по нескольким полям 
V
    Опции темы
Zloxa
Дата 31.5.2012, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


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

Репутация: 53
Всего: 161



Цитата(Akella @  31.5.2012,  14:24 Найти цитируемый пост)
проблема заключается вот в чем:

не понял проблемы. Тот же if или case

Добавлено @ 16:46
Только делать это, соответственно, внутри sum.(т.к. зависит от  a.pn)
a*(b+c+d)=a*b+a*c+a*d

Это сообщение отредактировал(а) Zloxa - 31.5.2012, 16:47


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akella
Дата 31.5.2012, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



да вроде получилось, протестирую и выложу
PM MAIL   Вверх
Akella
Дата 4.6.2012, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Переделал всё на использование конкретных дат, а не дней недели

Код

SELECT u.id
     , u.fio
     , u.login
     , u.plus_sum_premier
     , u.prepayment_premier
     , sum(if(dayofweek(d.date_out) = 2, if(a.paid = 0, v.price_d, 0), if(a.paid = 0, v.price, 0))) AS sum_free
     , sum(if(dayofweek(d.date_out) = 2, if(a.paid = 1, v.price_d, 0), if(a.paid = 1, v.price, 0))) AS sum_paid
FROM
  kvartal_ekr.users u

LEFT JOIN kvartal_prem.ads a
ON (u.id = a.id_user_ekr AND u.is_deleted = 0 AND u.is_blocked = 0)

LEFT JOIN kvartal_prem.datas d
ON (d.id_ads = a.id)

LEFT JOIN kvartal_prem.vid v
ON (v.id = a.vid AND v.deleted = 0)

WHERE
  d.date_out >= :dt_start
  AND d.date_out <= :dt_end

GROUP BY
  1

PM MAIL   Вверх
Zloxa
Дата 4.6.2012, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


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

Репутация: 53
Всего: 161



Цитата(Akella @  4.6.2012,  16:12 Найти цитируемый пост)
dayofweek

Результат функции зависит от региональных настроек сессии?

Добавлено через 1 минуту и 57 секунд
Цитата(Zloxa @  4.6.2012,  16:14 Найти цитируемый пост)
Результат функции зависит от региональных настроек сессии? 

Походу - нет... Тогда - ладно.

Правда  не нравится мне рефс на ODBC стандарт..

Добавлено через 4 минуты и 45 секунд
Цитата(Akella @  4.6.2012,  16:12 Найти цитируемый пост)
WHERE
  d.date_out >= :dt_start
  AND d.date_out <= :dt_end

Условие делает внешнее соединение с d вырожденным во внутреннее - так и задумывалось?

Добавлено через 5 минут и 45 секунд
Цитата(Zloxa @  4.6.2012,  16:14 Найти цитируемый пост)
с d

т.к. d джойнится к а, то и левое соединение с а тоже вырождается во внутреннее.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




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


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

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