All streams
Search
Write a publication
Pull to refresh
19
0
Send message
Ваш пример более изящный и чистый, но сначала ломает голову своим хитрым ходом в избавлении от избыточного кода при «вызове параметров» через секцию from второго запроса в рекурсии. Обычно, после декартова произведения следует нещадная чистка результатов от лишних строк, чего тут нет — но это ровно до того момента, пока не осенит, что умножение с однострочными таблицами.

Я недолюбливаю и крайне редко использую декартово произведение, обычно все задачи решаются через join где сразу и однозначно прописываются условия соединения, а не «где-то там». Запросы с join лучше выдерживают масштабирование и адаптацию.

Но это я про общий случай — в данном запросе вы ловко избавились от мусора.
Ну собственно, со мной так и вышло — математический факультет классического вуза с тоннами алгебр Ли, ТФКП и прочих УМФ :)))
А сейчас Postgres, Go, PHP, Delphi, JS и 1C — интеграция разного ПО в общую инфраструктуру
Диплом не гарантирует наличие высокой квалификации у кандидата, также как отсутствие диплома не означает отсутствия знаний.
Однако вероятность встретить качественных специалистов среди людей с дипломами, иная нежели среди людей без дипломов. Сознательно для избежания холиваров упускаю понятия выше-ниже.
Иногда для экономии времени лучше проводить отбор в той группе, где вероятность найти специалиста выше. А когда со временем и ресурсами проблем нет, или ценность нужного специалиста выше, чем любое потраченное время на поиск — то разумнее просматривать вообще всех кандидатов из обеих групп.
Вы правы — мой недочет, что я начал описывать уже частный случай задачи, потому что именно он оказался проблемным в плане результата и собственно над этой частной проблемой внутри общей и работал.

После первых комментариев, я внес описание общей задачи в текст, чтобы по возможности остальные читатели в верном контексте восприняли текст.

Если же вы имели ввиду, что ваш метод работает для любых месячных итераций дат, а не только последних дней, то он не сработает, к примеру, для генерации 28 чисел невисокосного года.


select ('2018-01-28 0:00:00'::timestamp + interval '1 day')::date + interval '1 mon' - interval '1 sec'

27.02.2018 23:59:59

Под универсальным механизмом я подразумевал генерацию timestamp с любым шагом, хоть по часам, хоть по 1 месяц 2 дня. Именно так работает итоговый запрос.


Что касается вашего алгоритма генерации последних дней, то это тот же трюк — как задачу последних дней месяцев, свести к первым дням следующих месяцев и шажком назад. Неважно, в конце мы секунду или день отнимем, главное через границу перейти.


Если пользоваться именно таким подходом для частной задачи, то думаю, все же удобнее воспользоваться generate_series, установив в параметры первые числа месяцев, как привели в примере выше. Вы предлагаете по честному с with recursive решить ту же задачу с тем же трюком, но руками сгенерировать первые числа, вместо вызова одной функции — это длиннее и неочевиднее.

Добавил уточнения по общей формулировке задачи в статью, спасибо
Да, в самом ПО для нахождения последних дней месяцев мы эти трюки с вычитаниями повсеместно употребляем.

Ваше решение хорошее и лаконичное, а голова в его сторону не думала, потому что задача изначально ставилась группировкой не на конец месяца, а по определенным числам. Например, если займ выдан 20 числа, то итоги по платежам подбивать на 20-е числа. Если выдан 31-го, то итоги подбивать на 31-е числа. И вот тут-то обнаружилась проблема.

При написании статьи я описывал уже вырожденный случай задачи, хотя она изначально стоит шире.
Курсе на втором матфака вывел для себя метод подготовки к сдаче теоретической части экзаменов.
Брал список билетов с вопросами. И по порядку — читал вопрос, находил теорему и читал ее доказательство. Не стараясь запоминать, но так чтобы было понятно откуда что берется.
Прочитывал таким образом 10-12 теорем, закрывал лекции-учебники. Брал лист бумаги и пытался доказать их последовательно уже самостоятельно. Стопорясь в каком-то месте, подсматривал это место и снова самостоятельно шел дальше. «Помарочные» доказательства (в процессе которых приходилось подглянуть) не переписывал заново и не возвращался к ним пока все билеты не были пройдены. Если перед экзаменом оставалось время — проходил еще на один раз. Если нет, то уже было все равно не страшно.

В процессе сдачи не приходилось принудительно вспоминать целиком само доказательство, просто начинаешь доказывать сам как-будто решаешь некую задачу задачу, упираешься как правило в те же микро-места где упирался при подготовке и помнишь как их проходить — а это несравнимо меньший объем для запоминания.

И еще важно — в эти периоды спал кроме ночи 2-3 за день по часу.

В итоге шпаргалка понадобилась только один раз за весь период обучения.
Интересно, а что будет когда в вашей модели полный баланс таки будет достигнут?
Смерть? Или абсолютная гармония?
Но хороший редактор в котором ты видишь список полей и быстро можешь добавить нужные с ручным выбором типов еще лучше :)
Я обычно не могу заснуть, если застреваю и не знаю как решить задачу.
Как только придумываю с удовольствием откладываю реализацию на утро.

Бывает, что и ложусь через силу, промучавшись пару часов ночью, и тогда задача утром решается за 15 минут.
Вы меня, наверное, неверно поняли.
Дело в том, что я против чтобы МНЕ доносили информацию, которая мне не нужна.
Подробности о ком-то, про кого я знать не хочу подробностей.
Вы же понимаете, что кроме зашоренности и осуждения есть еще немало оттенков в отношении, которые могут вылезти.
Это смещение вектора с деловых отношений на взгляд на коллегу как на человека противоположного пола, который (как я видел) неплохо может кое-что делать. Отсюда возможный флирт, искаженное восприятие фраз в разговорах и т.д.
Есть информация, отсутствие которой мне не повредит (и даже наоборот), а присутствие навредит. И я бы не очень хотел чтобы без моего на то разрешения мне ее доносили.
Я довольно свободен в своих взглядах и считаю что человек может себе позволить все что угодно, что не заденет других людей без их на то воли. И все его действия не стоят осуждения.
Но вот в данном случае как раскрытие информации про меня, так и донесение мне информации о других — это нарушение пункта о «не заденет других людей». И этот пункт нарушают эти так называемые моралисты, а не те кто где-то когда-то с кем-то переспал на камеру.
Так вот понимаете в чем дело:
Компроматы рассылаются тем людям, которые тоже ничего не спрашивают.
Если мне придет информация о том, что моя знакомая или деловой партнер снималась в порно или просто свингует, то это будет при общении лезть в голову (и возможно как-то скажется на наших взаимоотношениях), хотя эта информация мне не нужна.

Я думаю что если вы расскажете своим коллегам как и где вы мастурбируете, то это скажется негативно на ваших отношениях и будут определенные проблемы. Рассказываете? Нормально отнесетесь, если кто-то это про вас им расскажет?
Мы недавно при запуске своего сервиса, связанного с онлайн играми столкнулись с тем, что с нами не захотело работать большинство платежных систем. Ответ стандартный «мы не можем предложить сотрудничество организациям, предоставляющим такие услуги».
Наши услуги связаны с аналитикой матчей популярной онлайн игры, и для того чтобы посетители могли использовать эту аналитику для формирования команды мы сделали платный аккаунт. (Нести расходы за сервера и развитие проекта все же приходится, никуда не деться от этого).
Спасибо Яндексу — его Касса оказалась наиболее адекватной и открытой к нестандартным проектам.
Всем остальным неудобно работать с кем-то кто не является очередным стандартным интернет-магазином.
100руб.м. в месяц — это как расшифровать?
Такой ребенок уже сам заработать себе на игры сможет.
Один телефон на Androide, написал софт, чтобы в не рабочее время не отвлекали посторонние люди, а «свои» всегда могут достучаться.
«Экстренные звонки я не пропущу, на мелочь не отвлекусь.»

Так что расширенные функции телефона могут быть и плюсом в контексте фильтрации информационного потока.
Обычный мобильник не даст зависнуть в интернете, но от СМС-ок и переключения на них не избавит.

Information

Rating
Does not participate
Registered
Activity