ТАВРОФОРУМ

Вернуться   ТавроФорум > Не автомобильные темы > Решение бытовых проблем

Решение бытовых проблем Не вся жизнь в машине. Иногда что-то и дома сделать нужно.

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.06.2009, 13:49   #1
kkk
Кулверстукас
 
kkk
 
Адрес: Киев, Воскресенка
Возраст: 44
Сообщений: 16,076
Машина: Dana 1.2HTP Ambition
Длина: 473040мкм
Диаметр: 63мм
Отправить сообщение для kkk с помощью ICQ Отправить сообщение для kkk с помощью Skype™
По умолчанию Вапрос про SQL-запрос

Превед, крутые спецалисты. Есть задачка, с утра ломаю моцк, так ничо и не придумал.

Есть PostgreSQL, есть таблица, в ней три колонки: ФИО, сумма, дата. НУ, грубо говоря, описание счета, выставленного менеджером за что-то. На выходе надо поиметь годовой отчет: ФИО, Январь...Декабрь (в отдельных столбцах). В строках - соотвцно имена менеджеров и суммы выставленных счетов помесячно.

Вложенными запросами сервер делать не дает, запросы уровнем ниже первого больше одной строки возвращать не могут. Соответственно, у меня выходит только запрос, возвращающий обороты в целом, без разбивки по ФИО.

Я подзапросами делаю выборку сумм по месяцам, а вот как его допольнительно сгруппировать по ФИО - придумать не могу. Хелп.

Теоретически - я могу конечно в управляющую софтину эту задачу перегрузить, и собирать до кучи результаты нескольких запросов с выборкой по имени, но это неспортивно, хочется всю таблицу построить одним запросом.
__________________
Не думай о людишках свысока.
kkk вне форума   Ответить с цитированием
Старый 22.06.2009, 13:58   #2
Cayenne
 
Cayenne
 
Адрес: Рівне
Возраст: 38
Сообщений: 1,903
Машина: Merida Matts
Длина: 6990мкм
Диаметр: 35мм
Отправить сообщение для Cayenne с помощью ICQ
По умолчанию Re: Вапрос про SQL-запрос

А можна скл дамп таблички щоб потреніроватись ? а то впадло самому забивати дані для експеремента
__________________
бєздєльнік
Cayenne вне форума   Ответить с цитированием
Старый 22.06.2009, 14:10   #3
kkk
Кулверстукас
 
kkk
 
Адрес: Киев, Воскресенка
Возраст: 44
Сообщений: 16,076
Машина: Dana 1.2HTP Ambition
Длина: 473040мкм
Диаметр: 63мм
Отправить сообщение для kkk с помощью ICQ Отправить сообщение для kkk с помощью Skype™
По умолчанию Re: Вапрос про SQL-запрос

Цитата:
Сообщение от Cayenne
А можна скл дамп таблички щоб потреніроватись ? а то впадло самому забивати дані для експеремента
нна. колонки - OrderCost, OrderCreationTime, ManagerName
Вложения
Тип файла: rar dump_170.rar (4.4 Кб, 4 просмотров)
__________________
Не думай о людишках свысока.
kkk вне форума   Ответить с цитированием
Старый 22.06.2009, 14:13   #4
kkk
Кулверстукас
 
kkk
 
Адрес: Киев, Воскресенка
Возраст: 44
Сообщений: 16,076
Машина: Dana 1.2HTP Ambition
Длина: 473040мкм
Диаметр: 63мм
Отправить сообщение для kkk с помощью ICQ Отправить сообщение для kkk с помощью Skype™
По умолчанию Re: Re: Вапрос про SQL-запрос

Вот запрос, который пока есть, без разбивки по ФИО

SELECT
(SELECT sum("OrderCost") from ordertable WHERE (date_trunc('day', "OrderCreationTime") >= '01.01.2008') AND (date_trunc('day', "OrderCreationTime") <= '31.01.2008')) AS January,
(SELECT sum("OrderCost") from ordertable WHERE (date_trunc('day', "OrderCreationTime") >= '01.02.2008') AND (date_trunc('day', "OrderCreationTime") <= '28.02.2008')) AS February,
(SELECT sum("OrderCost") from ordertable WHERE (date_trunc('day', "OrderCreationTime") >= '01.03.2008') AND (date_trunc('day', "OrderCreationTime") <= '31.03.2008')) AS March,
(SELECT sum("OrderCost") from ordertable WHERE (date_trunc('day', "OrderCreationTime") >= '01.04.2008') AND (date_trunc('day', "OrderCreationTime") <= '30.04.2008')) AS April,
(SELECT sum("OrderCost") from ordertable WHERE (date_trunc('day', "OrderCreationTime") >= '01.05.2008') AND (date_trunc('day', "OrderCreationTime") <= '31.05.2008')) AS May,
(SELECT sum("OrderCost") from ordertable WHERE (date_trunc('day', "OrderCreationTime") >= '01.06.2008') AND (date_trunc('day', "OrderCreationTime") <= '30.06.2008')) AS June,
(SELECT sum("OrderCost") from ordertable WHERE (date_trunc('day', "OrderCreationTime") >= '01.07.2008') AND (date_trunc('day', "OrderCreationTime") <= '31.07.2008')) AS July,
(SELECT sum("OrderCost") from ordertable WHERE (date_trunc('day', "OrderCreationTime") >= '01.08.2008') AND (date_trunc('day', "OrderCreationTime") <= '31.08.2008')) AS August,
(SELECT sum("OrderCost") from ordertable WHERE (date_trunc('day', "OrderCreationTime") >= '01.09.2008') AND (date_trunc('day', "OrderCreationTime") <= '30.09.2008')) AS September,
(SELECT sum("OrderCost") from ordertable WHERE (date_trunc('day', "OrderCreationTime") >= '01.10.2008') AND (date_trunc('day', "OrderCreationTime") <= '31.10.2008')) AS October,
(SELECT sum("OrderCost") from ordertable WHERE (date_trunc('day', "OrderCreationTime") >= '01.11.2008') AND (date_trunc('day', "OrderCreationTime") <= '30.11.2008')) AS November,
(SELECT sum("OrderCost") from ordertable WHERE (date_trunc('day', "OrderCreationTime") >= '01.12.2008') AND (date_trunc('day', "OrderCreationTime") <= '31.12.2008')) AS December
__________________
Не думай о людишках свысока.
kkk вне форума   Ответить с цитированием
Старый 22.06.2009, 14:45   #5
Cayenne
 
Cayenne
 
Адрес: Рівне
Возраст: 38
Сообщений: 1,903
Машина: Merida Matts
Длина: 6990мкм
Диаметр: 35мм
Отправить сообщение для Cayenne с помощью ICQ
По умолчанию Re: Re: Вапрос про SQL-запрос

Мммм думав табличку в мускл запарити.. а то нема постгре під рукою але вона ж блін велика

А якщо попробувати щось тіпа GROUP BY Month(date) ?
__________________
бєздєльнік
Cayenne вне форума   Ответить с цитированием
Старый 22.06.2009, 15:17   #6
richi
 
Адрес: г. Донецк
Сообщений: 118
Длина: 1000мкм
Диаметр: 0мм
По умолчанию Re: Вапрос про SQL-запрос

select "ManagerName", sum(jan) as jan , sum(feb) as feb, sum(jun) as jun from
(
select
case when to_char("OrderCreationTime",'mm')='01' then sum("OrderCost") else 0 end as jan,
case when to_char("OrderCreationTime",'mm')='02' then sum("OrderCost") else 0 end as feb,
case when to_char("OrderCreationTime",'mm')='06' then sum("OrderCost") else 0 end as jun,
"ManagerName"
from ordertable
group by "ManagerName",to_char("OrderCreationTime",'mm' )) as q
group by "ManagerName"
richi вне форума   Ответить с цитированием
Старый 22.06.2009, 15:31   #7
kkk
Кулверстукас
 
kkk
 
Адрес: Киев, Воскресенка
Возраст: 44
Сообщений: 16,076
Машина: Dana 1.2HTP Ambition
Длина: 473040мкм
Диаметр: 63мм
Отправить сообщение для kkk с помощью ICQ Отправить сообщение для kkk с помощью Skype™
По умолчанию Re: Re: Вапрос про SQL-запрос

ешкин крот ! таки да, работает ! спасибо, добрый человек !
__________________
Не думай о людишках свысока.
kkk вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 02:14. Часовой пояс GMT +3.


Перевод: zCarot Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.