Варианты решения задачи 👇
1️⃣ Простое решение
select s, count(*)
from (select to_char(to_date('2022', 'yyyy') + level - 1, 'day') s
from dual
connect by level < add_months(to_date('2022', 'yyyy'), 12) - to_date('2022', 'yyyy') + 1) group by s
2️⃣Такой вариант работает в 14 раз быстрее
select to_char(trunc(to_date('2022', 'yyyy'), 'd') + (x -1), 'day'), 52 + decode(x, s, 1, 0) + decode(x, mod(s + 1, ly_mod), 1, 0)
from (select level x,
to_char(to_date('2022', 'yyyy'), 'd') s,
decode(extract(day from last_day(to_date('2022', 'yyyy') + 31)), 29, 7) ly_mod
from dual
connect by level <= 7)
📢 Решил задачку? Отлично. Будем рады видеть тебя в нашей команде.
Сейчас ищем разработчиков Oracle:
— Разработчик Oracle (PL/SQL)
— Разработчик Oracle
Переходи по ссылкам, отвлекайся сам или перешли друзьям, которые ищут себе работу в надёжной и аккредитованной компании.
#вакансии