Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 конвертер недель в месяц на SQL  [new]
jirniy_vit
Member

Откуда:
Сообщений: 16
Привет форумчане!


Уже 3 дня бьюсь над задачей конвертации продаж за неделю в продажи за месяц:
В таблице хранятся сведения о еженедельных продажах продукта.
Необходимо настроить автоматическое преобразование еженедельных значений в ежемесячные. Продажи в
переходных неделях (часть недели в одном месяце, часть в другом) необходимо распределить по
календарным дням.
В данном примере продажи за неделю, окончившуюся 05.03.2013, необходимо распределить следующим
образом 2 дня на февраль, 5 дней на март.
Результатом решения задачи является SQL код, который позволит автоматически получать преобразованные
данные в формате «Таблица результат».
Помогите пожалуйста написать сию хранимую процедуру
29 май 15, 09:31    [17705108]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
jirniy_vit
В таблице хранятся сведения о еженедельных продажах продукта.

В виде произвольного текста что ли хранятся ? "На прошлой недели Маша продала 5 штук" ?

jirniy_vit
В данном примере продажи за неделю, окончившуюся 05.03.2013, необходимо распределить следующим
образом 2 дня на февраль, 5 дней на март.

Почему именно так ?
29 май 15, 09:34    [17705122]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
jirniy_vit
Member

Откуда:
Сообщений: 16
Картинка с другого сайта.

К сообщению приложен файл. Размер - 33Kb
29 май 15, 09:36    [17705140]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
jirniy_vit
Member

Откуда:
Сообщений: 16
Картинка с другого сайта.
29 май 15, 09:37    [17705142]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
jirniy_vit
Member

Откуда:
Сообщений: 16
Из всего этого получилcя следующий код

+
create procedure date_transformer as
select FORMAT( EOMONTH(date), 'D', 'ru-ru' ),
SUM([freespace gb]) AS TotalSales
FROM test1
GROUP BY MONTH(date),EOMONTH(date)
--
exec date_transformer


но вот основная загвоздка в том, как посчитать эти самые переходные недели то есть те недели которые относятся к двум месяцам одновременно - например начало недели 28 февраля и конец 5 марта
по идее надо как то вычесть из этой недели часть другого месяца и прибавить ее к другой недели ?
вообщем тут я сломался
29 май 15, 09:42    [17705158]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
jirniy_vit
Member

Откуда:
Сообщений: 16
Glory,

потому как есть таблица продаж за неделю и из этого надо считать месячные продажи,
пример таблицы продаж за неделю уже выложен и примерный результат который должен быть,
29 май 15, 09:52    [17705209]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
jirniy_vit,

А с праздниками и выходными как поступаете?
Они вообще существуют?
29 май 15, 09:52    [17705210]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
jirniy_vit
Member

Откуда:
Сообщений: 16
iap,

так как в праздники и выходные продажи никто не прекращает то их можно считать как обычный день
29 май 15, 09:53    [17705220]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
jirniy_vit
Member

Откуда:
Сообщений: 16
jirniy_vit,


проблема в том,что нельзя просто так сложить недели так как это будет не верно
29 май 15, 09:54    [17705225]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
jirniy_vit
потому как есть таблица продаж за неделю

В вашей таблице нет никаких недель, только конкретные даты
А номер недели из даты можно получить функцией DATEPART
29 май 15, 09:55    [17705231]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
ЦБ
Member [заблокирован]

Откуда:
Сообщений: 2773
jirniy_vit
jirniy_vit,


проблема в том,что нельзя просто так сложить недели так как это будет не верно
Разбей неделю на дни и сложи дни
29 май 15, 09:56    [17705235]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
Glory
В вашей таблице нет никаких недель
Там очень странно всё.
Там только вторники!
29 май 15, 10:00    [17705263]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
ЦБ
Member [заблокирован]

Откуда:
Сообщений: 2773
iap
Там очень странно всё.
Там только вторники!
пересменка :)
29 май 15, 10:02    [17705270]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
iap
Glory
В вашей таблице нет никаких недель
Там очень странно всё.
Там только вторники!

Т.е. ТС предлагает, например, всю сумму 833,0 от 05.03.2013 "размазать" на 7 дней с 27.02 по 05.03 что ли?
29 май 15, 10:04    [17705282]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
Glory
iap
пропущено...
Там очень странно всё.
Там только вторники!

Т.е. ТС предлагает, например, всю сумму 833,0 от 05.03.2013 "размазать" на 7 дней с 27.02 по 05.03 что ли?
Видимо, 2/7 - в февраль, 5/7 - в март
29 май 15, 10:07    [17705295]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
iap
Glory
пропущено...

Т.е. ТС предлагает, например, всю сумму 833,0 от 05.03.2013 "размазать" на 7 дней с 27.02 по 05.03 что ли?
Видимо, 2/7 - в февраль, 5/7 - в март

Ну так это одно и тоже
29 май 15, 10:08    [17705304]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
iap
Member

Откуда: Москва
Сообщений: 47045
iap
Glory
пропущено...

Т.е. ТС предлагает, например, всю сумму 833,0 от 05.03.2013 "размазать" на 7 дней с 27.02 по 05.03 что ли?
Видимо, 2/7 - в февраль, 5/7 - в март
Но почему неделя начинается в среду?
Может, надо сдвигать периоды на 2 дня назад, в понедельники?
29 май 15, 10:09    [17705316]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
jirniy_vit
Member

Откуда:
Сообщений: 16
Glory,

Ситуация в том что 26 02 2013(это дата конца недели) продажи на сумму 312 а продажи на конец недели 5 03 2013 - 833
но если мы посмотрим в таблицу результатов то увидим другую сумму а именно 550 это все продажи за февраль
а получилось это вот как

05 03 2013 это воскресенье а понедельник и вторник это 27 и 28 февраля значит 833 \ 7 = 119
26 02 2013 - 312 + (119* 2 ) = 550 итого за февраль

значит к результату за 26 прибавленны продажи за часть недели относящейся к прошлому месяцу
29 май 15, 10:11    [17705324]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
jirniy_vit
Member

Откуда:
Сообщений: 16
в таблице продаж указана дата конца недели и сумма продаж за неделю
29 май 15, 10:13    [17705335]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
jirniy_vit
но если мы посмотрим в таблицу результатов

Давайте не будем смотреть пока в таблицу результатов, а ответим на простой вопрос
05 03 2013 833.0 - вот это нужно просто разделить на 7 дней ?

Так ?
27.02 - 833/7
28.02 - 833/7
01.03 - 833/7
02.03 - 833/7
03.03 - 833/7
04.03 - 833/7
05.03 - 833/7
29 май 15, 10:14    [17705343]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
jirniy_vit
Member

Откуда:
Сообщений: 16
jirniy_vit,

так вот собственно вопрос - как написать этот самый проверятель и выкусыватель дней прошлого месяца из недели ?
29 май 15, 10:14    [17705346]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
jirniy_vit
Member

Откуда:
Сообщений: 16
Glory,

я думаю да потому что в таблице результатов сумма 550 получилось как продажи за 26 + 2 дня
29 май 15, 10:16    [17705357]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
jirniy_vit
так вот собственно вопрос - как написать этот самый проверятель и выкусыватель дней прошлого месяца из недели ?

- Создате таблицу-календарь со все датами
- связываете вашу таблицу с календарем по номеру недели
- группируете результат по месяцу даты из календаря
29 май 15, 10:17    [17705361]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
jirniy_vit
Member

Откуда:
Сообщений: 16
Glory,

Спасибо попробовать можно, но тогда где будет перекидывание части продаж и дней недели в прошлый месяц ?
29 май 15, 10:22    [17705378]     Ответить | Цитировать Сообщить модератору
 Re: конвертер недель в месяц на SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
jirniy_vit
но тогда где будет перекидывание части продаж и дней недели в прошлый месяц ?

вот тут
Glory
группируете результат по месяцу даты из календаря
29 май 15, 10:22    [17705383]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить