Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL. / 17 сообщений из 17, страница 1 из 1
01.02.2017, 17:48
    #39396584
ORAMIT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
Привет форумчане!

Подобная задача была здесь:
конвертер недель в месяц на SQL http://www.sql.ru/forum/1159023-1/konverter-nedel-v-mesyac-na-sql

но результат ее решения не верный.

Исходные данные:

описание задачиНеобходимо настроить автоматическое преобразование еженедельных значений в ежемесячные. Продажи в переходных неделях (часть недели в одном месяце, часть в другом) необходимо распределить по будним дням (исключая выходные дни - сб, вск).
В данном примере продажи за неделю, окончившуюся 05.03.2013, необходимо распределить следующим образом 2 дня на февраль, 3 дня на март.


date_week summ 26.02.2013 312.00 05.03.2013 833.00 12.03.2013 225.00 19.03.2013 453.00 26.03.2013 774.00 02.04.2013 719.00 09.04.2013 136.00 16.04.2013 133.00 23.04.2013 157.00 30.04.2013 850.00 07.05.2013 940.00 14.05.2013 933.00 21.05.2013 422.00 28.05.2013 952.00 04.06.2013 136.00 11.06.2013 701.00

TOTAL:
8 676.00

RESULT: данный результат не является правильным!!!

DATE_MONTH total_summ28.02.2013 550.0031.03.2013 2 560.5730.04.2013 1 481.4331.05.2013 3 305.2930.06.2013 778.7131.07.2013 0.00

TOTAL:
8 676,00

Пример: правильный результат за 28.02.2013 = 645,2

Вопрос: как его получить?

Код с тестовыми данными:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
create table week_to_month
( 
    date_week date,
    summ number
);

truncate table week_to_month;

insert into week_to_month
values(TO_DATE('2013.02.26', 'yyyy.mm.dd'),312);
insert into week_to_month
values(TO_DATE('2013.03.05', 'yyyy.mm.dd'),833);
insert into week_to_month
values(TO_DATE('2013.03.12', 'yyyy.mm.dd'),225);
insert into week_to_month
values(TO_DATE('2013.03.19', 'yyyy.mm.dd'),453);
insert into week_to_month
values(TO_DATE('2013.03.26', 'yyyy.mm.dd'),774);
insert into week_to_month
values(TO_DATE('2013.04.02', 'yyyy.mm.dd'),719);
insert into week_to_month
values(TO_DATE('2013.04.09', 'yyyy.mm.dd'),136);
insert into week_to_month
values(TO_DATE('2013.04.16', 'yyyy.mm.dd'),133);
insert into week_to_month
values(TO_DATE('2013.04.23', 'yyyy.mm.dd'),157);
insert into week_to_month
values(TO_DATE('2013.04.30', 'yyyy.mm.dd'),850);
insert into week_to_month
values(TO_DATE('2013.05.07', 'yyyy.mm.dd'),940);
insert into week_to_month
values(TO_DATE('2013.05.14', 'yyyy.mm.dd'),933);
insert into week_to_month
values(TO_DATE('2013.05.21', 'yyyy.mm.dd'),422);
insert into week_to_month
values(TO_DATE('2013.05.28', 'yyyy.mm.dd'),952);
insert into week_to_month
values(TO_DATE('2013.06.04', 'yyyy.mm.dd'),136);
insert into week_to_month
values(TO_DATE('2013.06.11', 'yyyy.mm.dd'),701);

commit;
...
Рейтинг: 0 / 0
01.02.2017, 17:50
    #39396586
ORAMIT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
добавлю:

утверждение: НЕ ВЕРНО!


jirniy_vitСитуация в том что 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 прибавленны продажи за часть недели относящейся к прошлому месяцу
...
Рейтинг: 0 / 0
01.02.2017, 17:53
    #39396590
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
ORAMITкак его получить?Самый простой способ: развернуть неделю в дни, а затем свернуть в месяцы.
...
Рейтинг: 0 / 0
01.02.2017, 18:05
    #39396602
ORAMIT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
Elic,

а как получить зв 28.02.2013 = 645,2 ?

можно просто формулой без sql. Есть решение?
...
Рейтинг: 0 / 0
01.02.2017, 18:11
    #39396613
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
ORAMITможно просто формулой без sql.sum(summ/5) group by month
...
Рейтинг: 0 / 0
01.02.2017, 18:16
    #39396619
ORAMIT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
ElicORAMITможно просто формулой без sql.sum(summ/5) group by month

я предполагал расчет для февраля 28.02.2013 используя цифры -

26.02.2013 312.00
итд.

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


можете показать ход вычисления?
...
Рейтинг: 0 / 0
01.02.2017, 18:36
    #39396649
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
ORAMITможете показать ход вычисления?Ты не понимаешь разницы между "делить на семь" и "делить на пять"
...
Рейтинг: 0 / 0
01.02.2017, 21:13
    #39396765
ORAMIT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
ElicORAMITможете показать ход вычисления?Ты не понимаешь разницы между "делить на семь" и "делить на пять"

Исходя из смысла деления целых чисел, мы можем сказать, что если произведение двух целых чисел a и b равно c, то частное от деления c на a равно b, и частное от деления c на b равно a. Приведем пример. Допустим нам известно, что произведение двух целых чисел 5 и −7 равно −35, тогда мы можем сказать, что частное (−35):5 равно −7, а частное (−35):(−7) равно 5.


P.S. Вы не знаете официального формального обращения?

авторОфициально формальное обращение в современном русском языке производится с употреблением местоимения второго лица множественного числа «вы», обращённого к одному респонденту. В письменной речи местоимение «вы», адресованное конкретному собеседнику, в определённых случаях пишется с заглавной буквы.


Я Вас очень прошу, если Вас не затруднит, больше не писать в темах, которыя создаются мною.
...
Рейтинг: 0 / 0
01.02.2017, 21:35
    #39396779
Гы-гы
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
ORAMIT, да кто вас, кретинов обидчивых, сортировать-то будет?
...
Рейтинг: 0 / 0
02.02.2017, 07:49
    #39396909
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
ORAMITЯ Вас очень прошу, если Вас не затруднит, больше не писать в темах, которыя создаются мною.Слишком большая честь для нас.
Специально для особо тупых демонстрирую, что после разложения недель в рабочие дни для февраля получается:
Код: plsql
1.
select 312/5+312/5+312/5+312/5+312/5 + 833/5+833/5 from dual;

Ты же сам попросил
ORAMITможно просто формулой без sql
...
Рейтинг: 0 / 0
02.02.2017, 09:04
    #39396942
Plohoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
Вот с разверткой по дням

with tab_1 as (
select date_week - num_d end_dat
, num_d
, date_week
, summ/5 day_sum
from week_to_month m1
, (select rownum -1 num_d
from dual
connect by level < 8) w1
order by date_week, num_d
)
select last_day(end_dat) month_d
, sum(case when to_char(end_dat, 'D') in (1, 2, 3, 4, 5)
then day_sum
else 0
end) month_s
from tab_1
group by last_day(end_dat)
order by 1
...
Рейтинг: 0 / 0
02.02.2017, 09:17
    #39396953
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
Plohoyto_char(end_dat, 'D') inNLS-говнокод.
Plohoylevel < 8Незачем генерировать выходные, чтобы потом с ними же неумело сражаться.
...
Рейтинг: 0 / 0
02.02.2017, 15:18
    #39397331
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
ORAMITПривет форумчане!

Подобная задача была здесь:
конвертер недель в месяц на SQL http://www.sql.ru/forum/1159023-1/konverter-nedel-v-mesyac-na-sql

но результат ее решения не верный.

Исходные данные:

описание задачиНеобходимо настроить автоматическое преобразование еженедельных значений в ежемесячные. Продажи в переходных неделях (часть недели в одном месяце, часть в другом) необходимо распределить по будним дням (исключая выходные дни - сб, вск).
В данном примере продажи за неделю, окончившуюся 05.03.2013, необходимо распределить следующим образом 2 дня на февраль, 3 дня на март.

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

Ну да, ну да.. Неверное решение неверной задачи.

Сударь, у вас собеседование или пересдача?

Уже вторая тема, где вы просите за вас решить задачу из серии "спросили на собеседовании".
...
Рейтинг: 0 / 0
02.02.2017, 15:55
    #39397372
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
env,

все мы знаем, что на собеседованиях спрашивают.
...
Рейтинг: 0 / 0
02.02.2017, 16:01
    #39397376
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
Вспомнить все,

а почему не 20144089 ?
...
Рейтинг: 0 / 0
02.02.2017, 16:09
    #39397390
Гы-ГЫ..
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
envORAMITПривет форумчане!

Подобная задача была здесь:
пропущено...


но результат ее решения не верный.

Исходные данные:

пропущено...


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

Ну да, ну да.. Неверное решение неверной задачи.

Сударь, у вас собеседование или пересдача?

Уже вторая тема, где вы просите за вас решить задачу из серии "спросили на собеседовании".

ой Вы уже и тут.

устроили охоту на ведьм?

ну раз у Вас так пригорает. покажу другую точку зрения.

Вы сударь не из тех ли будете, кто открывает вакансии и ворует чужие тестовые задачи?
у вас горит, потомучто придется выдумывать новую задачку...

ну так что бы Вам подобным было не повадно, краденные задачи и публикуются.
...
Рейтинг: 0 / 0
02.02.2017, 16:16
    #39397402
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
Гы-ГЫ..,

Широкая у вас лопата сударь. И вентилятор неплохо раскручиваете.

Удивительно, что такая щедрая натура до сих пор не выложила собственный вариант решения. Как и ТС.

з.ы. или это одно лицо....
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL. / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]