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

Подобная задача была здесь:
конвертер недель в месяц на 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
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
    #39396586
ORAMIT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добавлю:

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


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

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

можно просто формулой без sql. Есть решение?
...
Рейтинг: 0 / 0
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
    #39396613
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ORAMITможно просто формулой без sql.sum(summ/5) group by month
...
Рейтинг: 0 / 0
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
    #39396619
ORAMIT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
    #39396649
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ORAMITможете показать ход вычисления?Ты не понимаешь разницы между "делить на семь" и "делить на пять"
...
Рейтинг: 0 / 0
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
    #39396765
ORAMIT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicORAMITможете показать ход вычисления?Ты не понимаешь разницы между "делить на семь" и "делить на пять"

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


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

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


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

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

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
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
    #39396953
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Plohoyto_char(end_dat, 'D') inNLS-говнокод.
Plohoylevel < 8Незачем генерировать выходные, чтобы потом с ними же неумело сражаться.
...
Рейтинг: 0 / 0
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
    #39397331
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Задача: преобразование еженедельных значений в ежемесячные на Oracle SQL.
    #39397372
env,

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

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

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


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

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

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


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

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

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

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

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

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

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

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

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

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

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

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


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