powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / SQL [закрыт для гостей] / Зодачко
25 сообщений из 47, страница 1 из 2
Зодачко
    #178060
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
ГДе там наш Казахский фулстек?

Задачка.
Есть две даты. с помощью SQL запроса - найти сколько 29-ых февраля между ними.
таблицы не использовать.
...
Рейтинг: 0 / 0
Зодачко
    #178068
Умник^практик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
функцию isDATE можно использовать?
PS если год невысокосный, то на 29 февраля возвращает false
...
Изменено: 09.10.2022, 11:57 - Умник^практик
Рейтинг: 0 / 0
Зодачко
    #178076
Iron Horse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Умник^практик  09.10.2022, 11:56
[игнорируется]
функцию isDATE можно использовать?
PS если год невысокосный, то на 29 февраля возвращает false
Этого сука недостаточно. Год может быть и високосный, да 29.02 может не попадать в заданный диапазон.
...
Рейтинг: 0 / 0
Зодачко
    #178080
Умник^практик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Iron Horse  09.10.2022, 12:05
[игнорируется]
Умник^практик  09.10.2022, 11:56
[игнорируется]
функцию isDATE можно использовать?
PS если год невысокосный, то на 29 февраля возвращает false
Этого сука недостаточно. Год может быть и високосный, да 29.02 может не попадать в заданный диапазон.
если не попадет, то и проверяться в isDATE не будет

одним select-ом можно, если SQLServer или Oracle (в MySQL вот isDATE нет)
...
Изменено: 09.10.2022, 12:19 - Умник^практик
Рейтинг: 0 / 0
Зодачко
    #178105
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
Умник^практик  09.10.2022, 11:56
[игнорируется]
функцию isDATE можно использовать?
PS если год невысокосный, то на 29 февраля возвращает false
Смотря на какой базе она есть . можешь попробовать но учти что у тебя есть только две даты а между ними может быть 100 лет
и даже CTE не поможет.
...
Рейтинг: 0 / 0
Зодачко
    #178110
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
Умник^практик  09.10.2022, 12:18
[игнорируется]
Iron Horse  09.10.2022, 12:05
[игнорируется]
Умник^практик  09.10.2022, 11:56
[игнорируется]
функцию isDATE можно использовать?
PS если год невысокосный, то на 29 февраля возвращает false
Этого сука недостаточно. Год может быть и високосный, да 29.02 может не попадать в заданный диапазон.
если не попадет, то и проверяться в isDATE не будет

одним select-ом можно, если SQLServer или Oracle (в MySQL вот isDATE нет)
у меня видимо какой то неправильный оракл. но ты волен взять и написать запрос :-)
а заодно выяснить как выбрать каждый из 200 месяцев в запросе для проверки учитывая что в таблице эти месяца не лежат.
...
Рейтинг: 0 / 0
Зодачко
    #178111
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Doublekey  09.10.2022, 12:45
[игнорируется]
а между ними может быть 100 лет
и даже CTE не поможет.
есть такая функция в Postgresql generate_series, береш начальный год береш конечный скармливаешь в неё и она тебе возвращает ряд, потом считаешь сумму валидных 29 февраля на всем ряду через isDate или что там в твоей базе есть. На той базе на которой ты ща тренируешься должен быть аналог, может не прямой может с извратом через рекурсию но будет, просто ищи по стековермлоу mydb postgresql generate_series аналог
...
Изменено: 09.10.2022, 12:51 - vimba
Рейтинг: 0 / 0
Зодачко
    #178112
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
Одним селектом можно и без ISDATE можно, предлагайте варианты как :L-)
...
Рейтинг: 0 / 0
Зодачко
    #178113
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
vimba  09.10.2022, 12:49
[игнорируется]
Doublekey  09.10.2022, 12:45
[игнорируется]
а между ними может быть 100 лет
и даже CTE не поможет.
есть такая функция в Postgresql generate_series, береш начальный год береш конечный скармливаешь в неё и она тебе возвращает ряд, потом считаешь сумму валидных 29 февраля на всем ряду.
В Постгре есть есть даже коннект бай. может быть им накрутить, а вот как это решить без СТЕ коннект баев и прочего. то есть просто на основе разницы
...
Рейтинг: 0 / 0
Зодачко
    #178285
Гарыныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
Doublekey  09.10.2022, 11:40
[игнорируется]
ГДе там наш Казахский фулстек?
а кто ето?
...
дед-пердед
Рейтинг: 0 / 0
Зодачко
    #180245
Артефакт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
скорее всего бицуха сбежавший в казахстан
...
Рейтинг: 0 / 0
Зодачко
    #180246
9288
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тупой перебор с проверкой последнего дня февраля
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
tst> with t as (select date'1222-01-01' t_beg, sysdate t_end from dual),
  2       r as (select extract(year from t_beg)-1+rownum t_year
  3             from dual, t connect by level <= months_between(t_end, t_beg)/12+1),
  4       m as (select to_date('01-03-'||t_year, 'dd-mm-yyyy')-1 t_dt from r)
  5  select count(*) from m, t where t_dt between t_beg and t_end
  6  and extract(day from t_dt)=29
  7  /

  COUNT(*)
----------
       197
...
Изменено: 11.10.2022, 04:12 - 9288
Рейтинг: 1 / 0
Нравится: vimba
Зодачко
    #186814
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
9288  11.10.2022, 04:11
[игнорируется]
Тупой перебор с проверкой последнего дня февраля
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
tst> with t as (select date'1222-01-01' t_beg, sysdate t_end from dual),
  2       r as (select extract(year from t_beg)-1+rownum t_year
  3             from dual, t connect by level <= months_between(t_end, t_beg)/12+1),
  4       m as (select to_date('01-03-'||t_year, 'dd-mm-yyyy')-1 t_dt from r)
  5  select count(*) from m, t where t_dt between t_beg and t_end
  6  and extract(day from t_dt)=29
  7  /

  COUNT(*)
----------
       197
А без рекурсий?
...
Рейтинг: 0 / 0
Зодачко
    #186827
9288
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем?
Или ты считаешь что надо найти года, делящаеся на 4, убрать делящиеся на 1000 и т.п. вычисления?
Ты уверен, что это сработает в начале эры?
Юлианский/грегорианский календарь не без изъебов
...
Рейтинг: 0 / 0
Зодачко
    #186832
ЖПС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
9288  17.10.2022, 07:10
[игнорируется]
убрать делящиеся на 1000 и т.п. вычисления?
на 100?
...
Рейтинг: 0 / 0
Зодачко
    #186835
9288
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На 100 убрать, на 1000 оставить, сам запутался :(((
2000 так-то тоже нивисокосный был
Но смысла для разовой задачи не вижу -- только как тут любят, проверить на знание предмета
...
Рейтинг: 0 / 0
Зодачко
    #186850
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
9288  17.10.2022, 07:10
[игнорируется]
А зачем?
Или ты считаешь что надо найти года, делящаеся на 4, убрать делящиеся на 1000 и т.п. вычисления?
Ты уверен, что это сработает в начале эры?
Юлианский/грегорианский календарь не без изъебов
оракл вроде учитывает все эти вычисления касаемо 1000 и т.д.

а вообще это за тем что данную задачку давали народу который еще не в курсе что такое коннект бай.
...
Рейтинг: 0 / 0
Зодачко
    #186852
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
9288  17.10.2022, 07:20
[игнорируется]
На 100 убрать, на 1000 оставить, сам запутался :(((
2000 так-то тоже нивисокосный был
Но смысла для разовой задачи не вижу -- только как тут любят, проверить на знание предмета
ну вот на знание предмета и давали, причем тем кто не в курсе рекурсивных методов.
...
Рейтинг: 0 / 0
Зодачко
    #186863
9288
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Doublekey  17.10.2022, 07:42
[игнорируется]
9288  17.10.2022, 07:20
[игнорируется]
На 100 убрать, на 1000 оставить, сам запутался :(((
2000 так-то тоже нивисокосный был
Но смысла для разовой задачи не вижу -- только как тут любят, проверить на знание предмета
ну вот на знание предмета и давали, причем тем кто не в курсе рекурсивных методов.
В чем прикол?
Ну можно запросить ALL_OBJECTS или GENERATE_SERIES (или как он там называется)
Или можно решить, что ты знаешь как вычисляется високосный год (какой год был 0?)
Но зачем?
...
Рейтинг: 0 / 0
Зодачко
    #186871
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
9288  17.10.2022, 07:51
[игнорируется]
Doublekey  17.10.2022, 07:42
[игнорируется]
9288  17.10.2022, 07:20
[игнорируется]
На 100 убрать, на 1000 оставить, сам запутался :(((
2000 так-то тоже нивисокосный был
Но смысла для разовой задачи не вижу -- только как тут любят, проверить на знание предмета
ну вот на знание предмета и давали, причем тем кто не в курсе рекурсивных методов.
В чем прикол?
Ну можно запросить ALL_OBJECTS или GENERATE_SERIES (или как он там называется)
Или можно решить, что ты знаешь как вычисляется високосный год (какой год был 0?)
Но зачем?
ну в том прикол, что типа генерейт есть в постгре а в оракле нет. и в мссккл тоже нет.
но у и если оллобжект брать как вариант генерации последовательности а месяцев может быть больше
и кстати у всех ли пользователей есть доступ к этой таблице

то есть прикол в том как это дело рассчитать не генерируя простыню из февралей для проверки високосные они или нет.
а как вычисляется високосный год тут знать не надо оракл знает или мсскуль у него и можно спросить причем необязательно ластдеем

я ж говорю синтетическая задачка для академических целей.
...
Изменено: 17.10.2022, 08:06 - Doublekey
Рейтинг: 0 / 0
Зодачко
    #186872
eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
Doublekey  09.10.2022, 11:40
[игнорируется]
найти сколько 29-ых февраля между ними
нахрена?
...
Рейтинг: 0 / 0
Зодачко
    #186873
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
eNose  17.10.2022, 08:06
[игнорируется]
Doublekey  09.10.2022, 11:40
[игнорируется]
найти сколько 29-ых февраля между ними
нахрена?
ПАТАМУЧТА ГЛАДИОЛУС!
...
Рейтинг: 0 / 0
Зодачко
    #186876
9288
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Doublekey  17.10.2022, 08:06
[игнорируется]
но у и если оллобжект брать как вариант генерации последовательности а месяцев может быть больше
и кстати у всех ли пользователей есть доступ к этой таблице
Ты путаешь
Доступ есть у всех, но если хочется побольше можно и декартово произведение с ним же захреначить

Но ты так и не привел красивого решения
...
Рейтинг: 0 / 0
Зодачко
    #186893
Горбатый ёж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eNose  17.10.2022, 08:06
[игнорируется]
Doublekey  09.10.2022, 11:40
[игнорируется]
найти сколько 29-ых февраля между ними
нахрена?
Для расчёта процентов по кредиту, например.
...
Рейтинг: 0 / 0
Зодачко
    #186902
9288
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне в свое время очень нравилась схема расчетов в одной плаьежной системе
То у них год считается за 360 дней (маленькте месяцы дополняютмя), то остаток считается по минимуму/среднему/исходящему/входящему остатку по счету
Весьма гибкая, но не факт, что соответствовала законодательству
Правда и законодательство не очень суровое было -- таки 90-е годы
...
Рейтинг: 0 / 0
25 сообщений из 47, страница 1 из 2
Форумы / SQL [закрыт для гостей] / Зодачко
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (37): Yandex Bot, Анонимы (33), Bing Bot 1 мин., erbol 2 мин., Green 5 мин.
x
x
Закрыть


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