powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как оптимизировать громоздкий запрос sql ?
73 сообщений из 73, показаны все 3 страниц
Как оптимизировать громоздкий запрос sql ?
    #39672505
авторselect
t1.DDATES,
initcap(to_char(t1.DDATES,'DAY','NLS_DATE_LANGUAGE=RUSSIAN')) P_D_RUS,

((SELECT NULL FROM DUAL)
||'['||
(SELECT COUNT (*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))
||']'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=20319110
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=24439460
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=21178087
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=33232
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=33233
AND nvl(HOSP_HISTORY_DS,0) = 0 ))

as DAY_TOTAL,


-- НО-1

((SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy')
AND HOSP_PLAN_KIND=75600447 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))
||' ('||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy')
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447
and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy')
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy')
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=33232 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy')
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=33232 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)||')'

) as NO_1_TOTAL


from
table (cast (d_pkg_dat_tools.DATES_IN_RANGE(to_date('01-07-2018', 'dd-mm-yyyy'),to_date('31-07-2018', 'dd-mm-yyyy'),1) as D_CL_DATE)) t1
order by t1.DDATES


Выкладываю кусок кода т.к весь запрос состоит из 6 кусков кода ,включая вложенные подзапросы.
Запрос выполняется оч.долго, коллеги которые работают в программе с этим отчетом просто вешаются,когда он формируется по 10 минут
Вопрос, как убрать подзапросы или как мне его правильно оптимизировать ?
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672510
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234,

почитать про PIVOT или реализацию на CASE/DECODE в версиях, его не поддерживающих...
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672513
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234,

CASE/DECODE-ный вариант
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672515
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234
Код: 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.
43.
44.
45.
46.
47.
48.
49.
select
t1.DDATES,
initcap(to_char(t1.DDATES,'DAY','NLS_DATE_LANGUAGE=RUSSIAN')) P_D_RUS,

((SELECT NULL FROM DUAL) 
||'['|| 
(SELECT COUNT (*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))
||']'|| 
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=20319110
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=24439460
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=21178087
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=33232
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=33233
AND nvl(HOSP_HISTORY_DS,0) = 0 ))

as DAY_TOTAL,


-- НО-1 

((SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') 
AND HOSP_PLAN_KIND=75600447 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))
||' ('||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') 
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 
and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') 
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') 
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=33232 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') 
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=33232 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)||')'

) as NO_1_TOTAL


from
table (cast (d_pkg_dat_tools.DATES_IN_RANGE(to_date('01-07-2018', 'dd-mm-yyyy'),to_date('31-07-2018', 'dd-mm-yyyy'),1) as D_CL_DATE)) t1
order by t1.DDATES




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

Хотя, всё равно - нечитабельно...
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672520
Щукина Анна,читал я про pivot, но дело в том , что он мне все суммирует т к таблица у меня одна точнее представление, а данные то нужно достать разные из этого представленияб согласно условиям. Как быть не знаю

Вот как делал :

авторSELECT * FROM (
SELECT COUNT(*) cnt, 'HOSP_PLAN_KIND' id FROM D_V_HPK_PLAN_JOURNALS_ADD
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy')
AND PAYMENT_KIND_ID in 20319110
UNION ALL
SELECT COUNT(*) cnt, 'HOSP_PLAN_KIND' id FROM D_V_HPK_PLAN_JOURNALS_ADD
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy')
AND PAYMENT_KIND_ID in 24439460
UNION ALL
SELECT COUNT(*) cnt, 'HOSP_PLAN_KIND' id FROM D_V_HPK_PLAN_JOURNALS_ADD
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy')
AND PAYMENT_KIND_ID in 33232
) pivot ( min (cnt) FOR id IN ( 'HOSP_PLAN_KIND' AS OMS, 'HOSP_PLAN_KIND' AS VMP, 'HOSP_PLAN_KIND' AS FED) )
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672530
Щукина Анна,

не понял тут ??
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672531
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234 Как быть не знаюПредоставить удобняе для использования тестовые данные, желаемый результат на них и словесное описание сути "хотелки"....
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672532
Щукина Анна, Щас попытаюсь объяснить как могу
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672536
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234Щукина Анна,

не понял тут ??
0) вам было предложено переписать запрос через PIVOT или его аналоги на CASE/DECODE
1) вам была дана ссылка на описание того, как "развернуть" результат при помощи decode
2) ваш пост был подправлен, в него было вставлено форматирование, чтобы код выглядел как код, а не как остальной текст сообщения

что из этого у вас вызвало непонимание
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672537
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прощай, индекс
Код: plsql
1.
 and trunc(PLAN_DATE)=trunc(t1.DDATES)
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672539
Щукина Анна, 2) пункт был не понятен ,теперь пояснили спс.
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672542
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxпрощай, индекс
Код: plsql
1.
 and trunc(PLAN_DATE)=trunc(t1.DDATES)

и так - 10 раз подряд :)
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672545
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Анна,

Начинайте по кусочкам
1. Вот это вложенное убожество
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
((SELECT NULL FROM DUAL) 
||'['|| 
(SELECT COUNT (*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))
||']'|| 
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=20319110
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=24439460
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=21178087
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=33232
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=33233
AND nvl(HOSP_HISTORY_DS,0) = 0 ))



превратите вот в такое например:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
(select null
||'['||
count(1)
||']'|| 
count(case when PAYMENT_KIND_ID=20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672549
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXL,

будьте, пожалуйста, внимательнее, когда отвечаете адресно. Я - не ТС, мне можно не отвечать ;)
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672557
Друзья спокойствие только спокойствие
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672560
MaximaXXL, На счет этого убожества полностью с вами согласен, писал его не я и поэтому попросил помощи, чтобы из этого убожества сделать конфетку.

((SELECT NULL FROM DUAL)
||'['||
(SELECT COUNT (*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))
||']'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=20319110
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=24439460
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=21178087
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=33232
AND nvl(HOSP_HISTORY_DS,0) = 0 )
||'/'||(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID=33233
AND nvl(HOSP_HISTORY_DS,0) = 0 ))
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672561
Ой опять не выделил запрос.
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672567
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Анна - извините если чем обидел

Александер234,

Переписать 2-ю часть:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
((SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') 
AND HOSP_PLAN_KIND=75600447 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))
||' ('||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') 
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 
and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') 
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') 
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=33232 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)
||'/'||
(SELECT COUNT(*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE HOSP_PLAN_KIND=75600447 and trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') 
and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') AND PAYMENT_KIND_ID=33232 AND nvl(HOSP_HISTORY_DS,0) = 0 /*AND RECORD_STATUS = 1 AND DEP_ID is not null*/)||')'



на

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
(SELECT COUNT(1) 
||' ('||COUNT(decode(PAYMENT_KIND_ID,20319110,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,24439460,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,21178087,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33232,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33232,1))
||')'
FROM D_V_HPK_PLAN_JOURNALS_ADD 
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') 
AND HOSP_PLAN_KIND=75600447 
AND nvl(HOSP_HISTORY_DS,0) = 0 
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))



Заметить ошибку или странность кода - выделенно красным
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672572
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234,

Далее подумать про индексы, как отмечалось ранее, и заменить

Код: plsql
1.
trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy')



на
Код: plsql
1.
plan_date >= to_date('01-07-2018', 'dd-mm-yyyy') and plan_date < to_date('31-07-2018', 'dd-mm-yyyy')+1



Ну и так далее, до "конфетного" вида
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672575
MaximaXXL,
Спасибо , а то тут все умные никто по существу пример привести не мог даже. Теперь знаю в каком направлении мне двигаться.
Показали хоть как избавиться от этих подзапросов долбанных.
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672579
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234,

Вы пока от них не избавились, и еще 2 - осталось.
Но если подумаете/попробуете - все у Вас получиться.
Кушайте слона по частям - легче переварить.
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672580
MaximaXXL, МИр не без добрых людей ,а то нахватались умных слов и кидаются ими, а по существу помочь никто не может . Еще раз Спасибо.
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39672582
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234,

1)
гляньте что выдает
select * from
table (cast (d_pkg_dat_tools.DATES_IN_RANGE(to_date('01-07-2018', 'dd-mm-yyyy'),to_date('31-07-2018', 'dd-mm-yyyy'),1) as D_CL_DATE)) t1

2) постройте план для одного из кусков и увидете где затык


3) 21562231 в случае наличия подходящего индекса может есть смысл убрать trunc(

.....
stax
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39673137
Stax, Выдает список дат . тут все ровно.
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39673142
MaximaXXL, собрал я запрос теперь формируется 14 сек против минуты , но загрузка через web форму стала по легче, но все ровно долговато. Я так понимаю мне теперь в сторону HTML копать надо ?
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39673145
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234MaximaXXL, собрал я запрос теперь формируется 14 сек против минуты

и не правильно ))))
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39673146
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234,

Тогда уже вывидите такое, для полного понимания:

Код: plsql
1.
2.
3.
4.
select to_char(DDATES,'dd.mm.yyyy hh24:mi:ss') 
from
table (cast (d_pkg_dat_tools.DATES_IN_RANGE(to_date('01-07-2018', 'dd-mm-yyyy'),to_date('31-07-2018', 'dd-mm-yyyy'),1) as D_CL_DATE)) t1
order by t1.DDATES



и такое:

Код: plsql
1.
2.
3.
select to_char(plan_date, 'dd.mm.yyyy hh24:mi:ss') 
from D_V_HPK_PLAN_JOURNALS_ADD 
where plan_date >= to_date('01-07-2018', 'dd-mm-yyyy') and plan_date < to_date('31-07-2018', 'dd-mm-yyyy')+1
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39673149
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DВААлександер234MaximaXXL, собрал я запрос теперь формируется 14 сек против минуты

и не правильно ))))

такое тоже бывает
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39673150
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234MaximaXXL, собрал я запрос теперь формируется 14 сек против минуты , но загрузка через web форму стала по легче, но все ровно долговато. Я так понимаю мне теперь в сторону HTML копать надо ?

Смотря что собрали
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39673170
MaximaXXL,
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39673171
MaximaXXL,
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39673172
DВА, И почему же неправильно ?
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39673174
MaximaXXL, А Собрал я вот что:

Код: 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.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
select
     t1.DDATES,
     initcap(to_char(t1.DDATES,'DAY','NLS_DATE_LANGUAGE=RUSSIAN')) P_D_RUS,
     
(select null
||'['||
count(1)
||']'|| 
count(case when PAYMENT_KIND_ID=20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233)) 

as DAY_TOTAL ,  
              
(SELECT COUNT(1) 
||' ('||COUNT(decode(PAYMENT_KIND_ID,20319110,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,24439460,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,21178087,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33232,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33233,1))
||')'
FROM D_V_HPK_PLAN_JOURNALS_ADD 
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy')
AND HOSP_PLAN_KIND=75600447
AND nvl(HOSP_HISTORY_DS,0) = 0 
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_1_TOTAL,


(select null
||'['||
count(1)
||']'|| 
count(case when PAYMENT_KIND_ID=20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES)AND HOSP_PLAN_KIND= 75600447 AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_1,

(SELECT COUNT(1) 
||' ('||COUNT(decode(PAYMENT_KIND_ID,20319110,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,24439460,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,21178087,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33232,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33233,1))
||')'
FROM D_V_HPK_PLAN_JOURNALS_ADD 
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') 
AND HOSP_PLAN_KIND = 75600446
AND nvl(HOSP_HISTORY_DS,0) = 0 
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_2_TOTAL,


(select null
||'['||
count(1)
||']'|| 
count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES)AND HOSP_PLAN_KIND = 75600446 AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_2,


(SELECT COUNT(1) 
||' ('||COUNT(decode(PAYMENT_KIND_ID,20319110,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,24439460,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,21178087,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33232,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33233,1))
||')'
FROM D_V_HPK_PLAN_JOURNALS_ADD 
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy')
AND HOSP_PLAN_KIND = 75600446
AND nvl(HOSP_HISTORY_DS,0) = 0 
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_3_TOTAL,

(select null
||'['||
count(1)
||']'|| 
count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES)AND HOSP_PLAN_KIND = 75600449 AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_3,

(SELECT COUNT(1) 
||' ('||COUNT(decode(PAYMENT_KIND_ID,20319110,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,24439460,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,21178087,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33232,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33233,1))
||')'
FROM D_V_HPK_PLAN_JOURNALS_ADD 
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') 
AND HOSP_PLAN_KIND = 75600446
AND nvl(HOSP_HISTORY_DS,0) = 0 
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_4_TOTAL,


(select null
||'['||
count(1)
||']'|| 
count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES)AND HOSP_PLAN_KIND = 75600045  AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_4,

(SELECT COUNT(1) 
||' ('||COUNT(decode(PAYMENT_KIND_ID,20319110,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,24439460,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,21178087,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33232,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33233,1))
||')'
FROM D_V_HPK_PLAN_JOURNALS_ADD 
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') 
AND HOSP_PLAN_KIND = 89730007
AND nvl(HOSP_HISTORY_DS,0) = 0 
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_5_TOTAL,

(select null
||'['||
count(1)
||']'|| 
count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES)AND HOSP_PLAN_KIND = 89730007  AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_5,


(SELECT COUNT(1) 
||' ('||COUNT(decode(PAYMENT_KIND_ID,20319110,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,24439460,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,21178087,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33232,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33233,1))
||')'
FROM D_V_HPK_PLAN_JOURNALS_ADD 
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') 
AND HOSP_PLAN_KIND = 75600448
AND nvl(HOSP_HISTORY_DS,0) = 0 
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as PNO_1_TOTAL,

(select null
||'['||
count(1)
||']'|| 
count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES)AND HOSP_PLAN_KIND = 75600448  AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as PNO_1,


(SELECT COUNT(1) 
||' ('||COUNT(decode(PAYMENT_KIND_ID,20319110,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,24439460,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,21178087,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33232,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33233,1))
||')'
FROM D_V_HPK_PLAN_JOURNALS_ADD 
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') 
AND HOSP_PLAN_KIND = 75705825
AND nvl(HOSP_HISTORY_DS,0) = 0 
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as DNEV_TOTAL,


(select null
||'['||
count(1)
||']'|| 
count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES)AND HOSP_PLAN_KIND = 75705825  AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as DNEV,

--- ТОТАЛ

(SELECT COUNT(1) 
||' ('||COUNT(decode(PAYMENT_KIND_ID,20319110,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,24439460,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,21178087,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33232,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33233,1))
||')'
FROM D_V_HPK_PLAN_JOURNALS_ADD 
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') 
--AND HOSP_PLAN_KIND = 75705825
AND nvl(HOSP_HISTORY_DS,0) = 0 
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as TOTAL


    from
     table (cast (d_pkg_dat_tools.DATES_IN_RANGE(to_date('01-07-2018', 'dd-mm-yyyy'),to_date('31-07-2018', 'dd-mm-yyyy'),1) as D_CL_DATE)) t1
    order by t1.DDATES
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39673175
Спрашивайте постараюсь прояснить непонятные моменты
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39673198
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234,

Везет Вам что у меня время есть =)

Почему неправильно - потому что программист должен быть внимательным (аки доктор )
Смотрите красный маркер под спойлером

Код: 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.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
select
     t1.DDATES,
     initcap(to_char(t1.DDATES,'DAY','NLS_DATE_LANGUAGE=RUSSIAN')) P_D_RUS,
     
(select null
||'['||
count(1)
||']'|| 
count(case when PAYMENT_KIND_ID=20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233)) 

as DAY_TOTAL ,  
              
(SELECT COUNT(1) 
||' ('||COUNT(decode(PAYMENT_KIND_ID,20319110,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,24439460,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,21178087,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33232,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33233,1))
||')'
FROM D_V_HPK_PLAN_JOURNALS_ADD 
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy')
AND HOSP_PLAN_KIND=75600447
AND nvl(HOSP_HISTORY_DS,0) = 0 
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_1_TOTAL,


(select null
||'['||
count(1)
||']'|| 
count(case when PAYMENT_KIND_ID=20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID=33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES)AND HOSP_PLAN_KIND= 75600447 AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_1,

(SELECT COUNT(1) 
||' ('||COUNT(decode(PAYMENT_KIND_ID,20319110,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,24439460,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,21178087,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33232,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33233,1))
||')'
FROM D_V_HPK_PLAN_JOURNALS_ADD 
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') 
AND HOSP_PLAN_KIND = 75600446
AND nvl(HOSP_HISTORY_DS,0) = 0 
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_2_TOTAL,


(select null
||'['||
count(1)
||']'|| 
count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES)AND HOSP_PLAN_KIND = 75600446 AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_2,


(SELECT COUNT(1) 
||' ('||COUNT(decode(PAYMENT_KIND_ID,20319110,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,24439460,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,21178087,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33232,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33233,1))
||')'
FROM D_V_HPK_PLAN_JOURNALS_ADD 
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy')
AND HOSP_PLAN_KIND = 75600446
AND nvl(HOSP_HISTORY_DS,0) = 0 
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_3_TOTAL,

(select null
||'['||
count(1)
||']'|| 
count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES)AND HOSP_PLAN_KIND = 75600449 AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_3,

(SELECT COUNT(1) 
||' ('||COUNT(decode(PAYMENT_KIND_ID,20319110,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,24439460,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,21178087,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33232,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33233,1))
||')'
FROM D_V_HPK_PLAN_JOURNALS_ADD 
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') 
AND HOSP_PLAN_KIND = 75600446
AND nvl(HOSP_HISTORY_DS,0) = 0 
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_4_TOTAL,


(select null
||'['||
count(1)
||']'|| 
count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES)AND HOSP_PLAN_KIND = 75600045  AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_4,

(SELECT COUNT(1) 
||' ('||COUNT(decode(PAYMENT_KIND_ID,20319110,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,24439460,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,21178087,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33232,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33233,1))
||')'
FROM D_V_HPK_PLAN_JOURNALS_ADD 
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') 
AND HOSP_PLAN_KIND = 89730007
AND nvl(HOSP_HISTORY_DS,0) = 0 
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_5_TOTAL,

(select null
||'['||
count(1)
||']'|| 
count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES)AND HOSP_PLAN_KIND = 89730007  AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as NO_5,


(SELECT COUNT(1) 
||' ('||COUNT(decode(PAYMENT_KIND_ID,20319110,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,24439460,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,21178087,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33232,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33233,1))
||')'
FROM D_V_HPK_PLAN_JOURNALS_ADD 
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') 
AND HOSP_PLAN_KIND = 75600448
AND nvl(HOSP_HISTORY_DS,0) = 0 
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as PNO_1_TOTAL,

(select null
||'['||
count(1)
||']'|| 
count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES)AND HOSP_PLAN_KIND = 75600448  AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as PNO_1,


(SELECT COUNT(1) 
||' ('||COUNT(decode(PAYMENT_KIND_ID,20319110,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,24439460,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,21178087,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33232,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33233,1))
||')'
FROM D_V_HPK_PLAN_JOURNALS_ADD 
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') 
AND HOSP_PLAN_KIND = 75705825
AND nvl(HOSP_HISTORY_DS,0) = 0 
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as DNEV_TOTAL,


(select null
||'['||
count(1)
||']'|| 
count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES)AND HOSP_PLAN_KIND = 75705825  AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as DNEV,

--- ТОТАЛ

(SELECT COUNT(1) 
||' ('||COUNT(decode(PAYMENT_KIND_ID,20319110,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,24439460,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,21178087,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33232,1))
||'/'|| COUNT(decode(PAYMENT_KIND_ID,33233,1))
||')'
FROM D_V_HPK_PLAN_JOURNALS_ADD 
where trunc(plan_date) >= to_date('01-07-2018', 'dd-mm-yyyy') and trunc(plan_date) <= to_date('31-07-2018', 'dd-mm-yyyy') 
--AND HOSP_PLAN_KIND = 75705825
AND nvl(HOSP_HISTORY_DS,0) = 0 
AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))

as TOTAL


    from
     table (cast (d_pkg_dat_tools.DATES_IN_RANGE(to_date('01-07-2018', 'dd-mm-yyyy'),to_date('31-07-2018', 'dd-mm-yyyy'),1) as D_CL_DATE)) t1
    order by t1.DDATES




Да и я думал что Вы продолжите переделку
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39673212
MaximaXXL, Да и я думал что Вы продолжите переделку. Какую переделку ? Этот код можно еще улучшить ?
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39673213
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234Спрашивайте постараюсь прояснить непонятные моменты
если переделываете то можно продолжить (но очень внимательно)

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 
select
 case
,case
...
FROM 
  table (cast ... t1
 ,D_V_HPK_PLAN_JOURNALS_ADD 
where 
       plan_date >= to_date('01-07-2018', 'dd-mm-yyyy') and plan_date < to_date('31-07-2018', 'dd-mm-yyyy')+1
 and ...
 and коды in ()
....

.....
stax
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39673215
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234,

И я почему-то думал что первый раз Вы остановитесь на вот таком варианте (а не закините селект на пол дороги)

Код: 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.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
select
     t1.DDATES,
     initcap(to_char(t1.DDATES,'DAY','NLS_DATE_LANGUAGE=RUSSIAN')) P_D_RUS,

  '['||count(case when                                                           then 1 end)
||']'||count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)
     
as DAY_TOTAL ,  
              
        sum(COUNT(case when                                nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600447 then 1 end)) over(order by null)
||' ('||sum(COUNT(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600447 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600447 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600447 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600447 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600447 then 1 end)) over(order by null)
||')'

as NO_1_TOTAL,

  '['||count(case when                                                               HOSP_PLAN_KIND = 75600447 then 1 end)
||']'||count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600447 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600447 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600447 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600447 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600447 then 1 end)

as NO_1,

        sum(COUNT(case when                                nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)) over(order by null)
||' ('||sum(COUNT(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)) over(order by null)
||')'

as NO_2_TOTAL,

  '['||count(case when                                                               HOSP_PLAN_KIND = 75600446 then 1 end)
||']'||count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)

as NO_2,

        sum(COUNT(case when                                nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)) over(order by null)
||' ('||sum(COUNT(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)) over(order by null)
||')'

as NO_3_TOTAL,

  '['||count(case when                                                               HOSP_PLAN_KIND = 75600449 then 1 end)
||']'||count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600449 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600449 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600449 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600449 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600449 then 1 end)

as NO_3,

        sum(COUNT(case when                                nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)) over(order by null)
||' ('||sum(COUNT(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600446 then 1 end)) over(order by null)
||')'

as NO_4_TOTAL,

  '['||count(case when                                                               HOSP_PLAN_KIND = 75600045 then 1 end)
||']'||count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600045 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600045 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600045 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600045 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600045 then 1 end)

as NO_4,

        sum(COUNT(case when                                nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 89730007 then 1 end)) over(order by null)
||' ('||sum(COUNT(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 89730007 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 89730007 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 89730007 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 89730007 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 89730007 then 1 end)) over(order by null)
||')'

as NO_5_TOTAL,

  '['||count(case when                                                               HOSP_PLAN_KIND = 89730007 then 1 end)
||']'||count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 89730007 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 89730007 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 89730007 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 89730007 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 89730007 then 1 end)

as NO_5,

        sum(COUNT(case when                                nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600448 then 1 end)) over(order by null)
||' ('||sum(COUNT(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600448 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600448 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600448 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600448 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600448 then 1 end)) over(order by null)
||')'

as PNO_1_TOTAL,

  '['||count(case when                                                               HOSP_PLAN_KIND = 75600448 then 1 end)
||']'||count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600448 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600448 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600448 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600448 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75600448 then 1 end)

as PNO_1,

        sum(COUNT(case when                                nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75705825 then 1 end)) over(order by null)
||' ('||sum(COUNT(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75705825 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75705825 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75705825 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75705825 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75705825 then 1 end)) over(order by null)
||')'

as DNEV_TOTAL,

  '['||count(case when                                                               HOSP_PLAN_KIND = 75705825 then 1 end)
||']'||count(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75705825 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75705825 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75705825 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75705825 then 1 end)
||'/'||count(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 AND HOSP_PLAN_KIND = 75705825 then 1 end)

as DNEV,

--- ТОТАЛ

        sum(COUNT(case when                                nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)) over(order by null)
||' ('||sum(COUNT(case when PAYMENT_KIND_ID = 20319110 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 24439460 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 21178087 AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 33232    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)) over(order by null)
||'/'|| sum(COUNT(case when PAYMENT_KIND_ID = 33233    AND nvl(HOSP_HISTORY_DS,0) = 0 then 1 end)) over(order by null)
||')'

as TOTAL

from table (cast (d_pkg_dat_tools.DATES_IN_RANGE(to_date('01-07-2018', 'dd-mm-yyyy'),to_date('31-07-2018', 'dd-mm-yyyy'),1) as D_CL_DATE)) t1
     left join D_V_HPK_PLAN_JOURNALS_ADD on (PLAN_DATE = t1.DDATES and PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))
group by t1.DDATES, initcap(to_char(t1.DDATES,'DAY','NLS_DATE_LANGUAGE=RUSSIAN')) P_D_RUS
order by t1.DDATES



Оставил Ваши ошибки для Total3 and Total4
Сам скрипт проверять нет ни вашей базы, ни особого желания, может где и накосячил со скобками
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39673217
MaximaXXL, Спасибо тебе ))!
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39673221
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234Этот код можно еще улучшить ?
Ну исписать полотенце много ума не надо.
А вот подумать и не шариться многократно по одним и тем же таблицам - требует не только внимания к деталям, но соображения, здравого смысла и даже немного фантазии.
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679106
MaximaXXL, Привет, снова нужна помощь по запросу одному. Поможешь ?
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679111
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234,

Тут многие могут помочь ...
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679112
Вообщем скидываю
Громоздкий селект как поправить не знаю

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT h.hc_date,
case
when h.num is not null then (select num||' заседание '||to_char(h.hc_date,'yyyy')||' года' from d_hospcomm where hc_date=h.hc_date)
else (select count(*)||' заседание '||to_char(h.hc_date,'yyyy')||' года' from d_hospcomm m where to_char(m.hc_date,'yyyy')=to_char(h.hc_date,'yyyy') and m.hc_date <= h.hc_date) 
end as num,
case
when h.num is not null then (select num from d_hospcomm where hc_date=h.hc_date)
else (select count(*) from d_hospcomm m where to_char(m.hc_date,'yyyy')=to_char(h.hc_date,'yyyy') and m.hc_date <= h.hc_date) 
end as num_s,
(select count(*) from D_HOSP_ADD where trunc(h.hc_date)=trunc(dec_date)) as kol     
FROM D_HOSPCOMM h
ORDER BY h.hc_date
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679116
MaximaXXL, Не знаю как многие, но что то в тот раз помог мне только ты.
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679131
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234Вообщем скидываю
Громоздкий селект как поправить не знаю

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT h.hc_date,
case
when h.num is not null then (select num||' заседание '||to_char(h.hc_date,'yyyy')||' года' from d_hospcomm where hc_date=h.hc_date)
else (select count(*)||' заседание '||to_char(h.hc_date,'yyyy')||' года' from d_hospcomm m where to_char(m.hc_date,'yyyy')=to_char(h.hc_date,'yyyy') and m.hc_date <= h.hc_date) 
end as num,
case
when h.num is not null then (select num from d_hospcomm where hc_date=h.hc_date)
else (select count(*) from d_hospcomm m where to_char(m.hc_date,'yyyy')=to_char(h.hc_date,'yyyy') and m.hc_date <= h.hc_date) 
end as num_s,
(select count(*) from D_HOSP_ADD where trunc(h.hc_date)=trunc(dec_date)) as kol     
FROM D_HOSPCOMM h
ORDER BY h.hc_date


Он не громоздкий, он туповатый, как бы не прискорбно это не звучало

Первое что надо делать:
Код: plsql
1.
2.
3.
4.
5.
6.
SELECT h.hc_date,
nvl(h.num, (select count(*) from d_hospcomm m where m.hc_date between trunc(h.hc_date,'yyyy') and h.hc_date)) ||' заседание '||to_char(h.hc_date,'yyyy')||' года' num,
nvl(h.num, (select count(*) from d_hospcomm m where m.hc_date between trunc(h.hc_date,'yyyy') and h.hc_date)) num_s,
(select count(*) from D_HOSP_ADD where trunc(h.hc_date)=trunc(dec_date)) as kol     
FROM D_HOSPCOMM h
ORDER BY h.hc_date


Второе - вывести данные:
Код: plsql
1.
2.
select to_char(hc_date ,'dd.mm.yyyy hh24:mi:ss') from D_HOSPCOMM 
select to_char(dec_date,'dd.mm.yyyy hh24:mi:ss') from D_HOSP_ADD 
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679139
MaximaXXL, Да ,эти говнокоды писал не я .Достались мне. Люди работать не могут вешаются .
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679152
MaximaXXL,
Второй пунк не понял . Вывести и скинуть скрин сюда ?
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679153
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234,

Я уже где-то писал, если не сильны (лень копаться) - отказывайтесь ... или берите много времени.
А дальше: читать и эксперементировать ...
Да, это не быстро, но Вам досталось, а на форуме переписали ... это ... ну как бы не правильно наверно
На сайте есть раздел Работа, там люди помогают за деньги. Т.е. если Вы получаете деньги и не имеете возможности учиться. Отдаете часть денег и за Вас все сделают.
Но мой Вам совет, проще читать и эксперементировать. Это значит Вы учитесь, а Вам за это еще и платят.
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679157
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234MaximaXXL,
Второй пунк не понял . Вывести и скинуть скрин сюда ?

Ну скажем так, они мне не нужны, это для Вас. Посмотреть, если нет времени в обоих таблицах то trunc(h.hc_date)=trunc(dec_date) замедляет процесс поиска и его надо менять на h.hc_date = dec_date. Это было в этой же ветке.
Я еще раз повторюсь - форум должен помогать учиться, а не делать работу за Вас.
То что я переписал прошлый селект, думая что помогаю Вам понять, что надо делать, похоже Вас наставило на неверный путь.
Вы не стали думать, а просто пришли с новой проблеммой, а это очень прискорбно мне осознавать.
Я хотел научить Вас как правильно и по шагам делать преобразования в больших селектах, а получилась "медвежья услуга" Вы отдали старый селект даже не проанализировав что на что и почему менялось
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679158
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234Громоздкий селект как поправить не знаю список рекомендаций как и в прошлый раз - рефакторите скалярные подзапросы из select-листа в форму джойна. чтобы многократно не бегать в одни и те же таблицы... а дальше уже пивотом или аналогами на case/decode разворачивайте в нужный вид.
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679161
MaximaXXL,
Копаться не лень и есть время ,а что касается раздела работа ,то за деньги понятное дело,что все сделают . На мой взгляд на то он и форум ,чтобы помочь навести на мысли . Если ты например знаешь почему и не помочь другому.
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679166
MaximaXXL,
Никто не в коем случае не просит все делать за меня . Где то затупил ,просмотрел и снова скинул на форум .Я согласен все делать сам .
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679174
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234MaximaXXL,
Никто не в коем случае не просит все делать за меня . Где то затупил ,просмотрел и снова скинул на форум .Я согласен все делать сам .ну так делайте. пути оптимизации вам наметили:
1) до минимум свести обращения к одним и тем же источникам данных
2) по возможности - избавиться от коррелированных подзапросов в пользу джойнов
3) внимательно следить за применением функций к индексированным полям таблиц, чтобы не ломать SARG-предикаты
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679176
Щукина Анна,
Спасибо это любой Гугл и янедекс говорит.
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679179
Спасибо всем за участие .
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679180
Пойду копаться.
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679182
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234Щукина Анна,
Спасибо это любой Гугл и янедекс говорит.значит нужно прислушаться .... и сделать всё самому.
либо уже не лукавить и честно попросить сделать всё за вас...
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679183
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александер234Пойду копаться.давно пора :) ;)
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679321
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXL
Код: plsql
1.
2.
3.
((SELECT NULL FROM DUAL) 
||'['|| 
(SELECT COUNT (*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))


Код: plsql
1.
select null||'abc';


даёт NULL
надо concat() юзать
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679357
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78MaximaXXL
Код: plsql
1.
2.
3.
((SELECT NULL FROM DUAL) 
||'['|| 
(SELECT COUNT (*) FROM D_V_HPK_PLAN_JOURNALS_ADD WHERE trunc(PLAN_DATE)=trunc(t1.DDATES) AND PAYMENT_KIND_ID in (20319110, 24439460, 21178087, 33232, 33233))


Код: plsql
1.
select null||'abc';


даёт NULL
надо concat() юзатьесли лень читать документацию, то вы бы хоть проверяли бы свои громкие высказывания перед тем, как высказывать их...
Не поленитесь пройти по ссылке и объяснить, почему практические результаты расходятся с вашими теоретическими умозаключениями...
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679372
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78
Код: plsql
1.
select null||'abc';

даёт NULL
надо concat() юзатьИ откуда ж такие придурки только вылазят?
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679397
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Аннаtip78пропущено...

Код: plsql
1.
select null||'abc';


даёт NULL
надо concat() юзатьесли лень читать документацию, то вы бы хоть проверяли бы свои громкие высказывания перед тем, как высказывать их...
Не поленитесь пройти по ссылке и объяснить, почему практические результаты расходятся с вашими теоретическими умозаключениями...
ой, я и не заметил, как в раздел к эмоциональным барышням попал
не ораклом единым...
http://sqlfiddle.com/#!17/9eecb/18220
http://sqlfiddle.com/#!9/9eecb/51088
все БД, как БД - обнуляют лишнее без всяких проверок, один дебильный оракл умнее всех
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679402
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78один дебильный ораклПшёл отседова.
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679407
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78не ораклом единым...тут каждый первый - "многостаночник", и вполне себе понимает и осознает различие в некоторых моментах работы разных СУБД. Но уж если пишите в разделе вполне определенной СУБД, до делайте это с учетом её специфических особенностей, а не проекцией опыта работы с другими продуктами...
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679477
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78один дебильный оракл умнее всех
тебе уже говорили что существует различие в функционале в разных БД.
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679492
merch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78дебильный оракл

...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679544
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Аннаtip78не ораклом единым...тут каждый первый - "многостаночник", и вполне себе понимает и осознает различие в некоторых моментах работы разных СУБД. Но уж если пишите в разделе вполне определенной СУБД, до делайте это с учетом её специфических особенностей, а не проекцией опыта работы с другими продуктами...
с учётом её дебильных особенностей, называйте уже вещи своими именами, русским по белому же пишу
и почему бы, собственно, не спроецировать "опыт работы с другими продуктами" на этот ваш Уракл?
У вас, барышня, язык впереди головы. Сколько кошек уже есть?
ещё раз для плоховидящих: все нормальные БД делают это правильно. И это хорошо, когда есть с чем сравнить
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679561
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78,

попробуйте скормить ваш CONCAT тому же самому MS SQL Server-у. Думаю, он вас пошлет туда же, куда и вариант с двойными палками (||), требуя исключительно "плюсов". Это, по вашему, тоже "дебильная СУБД", не поддерживающая персонально ваши хотелки?
вам про PostgreSQL или MySQL их дебильные кривости указать или вы и сами их знаете, но сейчас скромно умалчиваете?

З.Ы.
мне что оракл, что PG, что My/MS SQL - всё едино. Одинаково комфортно работаю с любой из этих СУБД, не цепляясь к некоторым нелогичным особенностям (но помня про них) и не называя их "дебильными"...
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679564
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78Сколько кошек уже есть?не стОит (хотя, в вашем случае, возможно, и не стоИт) проецировать собственные комплексы на других людей...
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679947
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Аннапопробуйте скормить ваш CONCAT тому же самому MS SQL Server-у.
вы что, сказали слово на букву M??

мне что оракл, что PG, что My/MS SQL - всё едино. Одинаково комфортно работаю с любой из этих СУБД, не цепляясь к некоторым нелогичным особенностям (но помня про них) и не называя их "дебильными"...
нельзя просто так пройти мимо "нелогичного" Уракла
И НЕ ПНУТЬ ЕГО!

в конце-концов, это же не я такую цену ставил
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39679971
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78надо concat() юзатьЯ правильно понял, что для обхода логичного null-поведения оператора || в логичных СУБД логично использовать функцию concat?
Но. В рostgresql concat(null, null) возвращает пустую строку, а mysql и mssql возвращают null. С другой стороны, concat('x', null) в postgresql и mssql вернет 'x', а в mysql вернет null.
...огласите весь список логичных СУБД.
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39680037
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"не в логичных СУБД", а в этом конкретном случае из первого поста:
автор(SELECT NULL FROM DUAL)
||'['||
(SELECT COUNT (*) ...

авторС другой стороны, concat('x', null) в postgresql и mssql вернет 'x', а в mysql вернет null.
...огласите весь список логичных СУБД.
postgres самый правильный подход выбрал, имхо
|| - так обNULLяется, а через concat() - нет
это очень удобно, потому что оба варианта нужны регулярно
а когда вариант всего 1, то вот это плохо и нелогично
...
Рейтинг: 0 / 0
Как оптимизировать громоздкий запрос sql ?
    #39680249
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
-2-,

боюсь он ответить не сможет, т.к. ни одной из этих субд он толком и не знает.
tip78ой, я и не заметил, как в раздел к эмоциональным барышням попал
не ораклом единым...
http://sqlfiddle.com/#!17/9eecb/18220
http://sqlfiddle.com/#!9/9eecb/51088
все БД, как БД - обнуляют лишнее без всяких проверок, один дебильный оракл умнее всех
А тут даже не догадался, что || в mysql - логический оператор, а не конкатенация.
...
Рейтинг: 0 / 0
73 сообщений из 73, показаны все 3 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как оптимизировать громоздкий запрос sql ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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