Обновить
-17

Пользователь

23
Подписчики
Отправить сообщение
Вообще этот сериал не про аварию. Хотя ей уделено очень много времени. Сериал про людей. Я бы сказал даже про причины развала СССР. Система, которая основной парадигмой выбрала ложь и своим и чужим, всегда идет к катастрофе с тысячами невинных жизней. Система уже к тому моменту разложилась настолько, что инженеры и руководство станции думали о своих шкурных интересах больше, чем о безопасности. Чиновники в руководстве думали больше о своих креслах, чем об страдающих от радиации людях. Простые люди оказались не нужны уже той системе, а взаимно такая система оказалась не нужна простым людям. В чем и был ее конец
Статья как предупреждение. Прежде всего молодым — не тратьте свое время на такую профессию. Лучше сразу учитесь и идите работать разработчиком
На сисадмина в таких компаниях будут всегда смотреть, как на обслугу. Я бы назвал эту работу «IT-официант»
А еще из космоса фонт — Солнце наше тоже же реактор. Чем больше таких «фермеров», тем больше будет произвола, тем страшнее жить
Верный. Если ты отработал 13:07:12, значит в часах это 14, а не 13
Я не знаю, что ты можешь, а что нет. Но у твоего сообщения стоит метка, что ты его редактировал
Ты уже исправил. Молодец. Я тебе код ошибки выложил предыдущего твоего нерабочего варианта
Смотри под спойлером SQL
Твой код не работает

SQL Error [42P01]: ОШИБКА: отношение «periods» не существует
Позиция: 162
Ну вот что получилось с округлением до часов

SQL
with periods(id,
start_time,
stop_time) as (
values(1,
'2019-03-29 07:00:00'::timestamp,
'2019-04-08 14:00:00'::timestamp),
(2,
'2019-04-10 07:00:00'::timestamp,
'2019-04-10 20:00:00'::timestamp),
(3,
'2019-04-11 12:00:00'::timestamp,
'2019-04-12 16:07:12'::timestamp),
(4,
'2018-12-28 12:00:00'::timestamp,
'2019-01-16 16:00:00'::timestamp) ) ,
calc_table as (
 select 
 	id,
 	date_part('day', date_trunc('day',stop_time) - date_trunc('day',start_time))::int as date_diff,
 	date_trunc('day',start_time)+ interval '10 hour' as start_work_time,
 	date_trunc('day',stop_time)+ interval '19 hour' as end_work_time
 from 
 	periods
) -- промежуточная таблица вычислений
select
	p.*,
	trunc(c.date_diff/7)*5*9 -- количество полных недель в рабочих часах
	+
	c.date_diff%7*9 -- дробная часть в рабочих часах
	-
	case 
		when trunc(c.date_diff/7) > 0 and c.date_diff%7 > 0  
		then
		(extract(isodow from start_time) - c.date_diff%7)*9
		else
		0
	end -- корректировка дробной части на выходные дни
	+ 
	(9 -
	case 
		when c.end_work_time > stop_time
		then date_part('hour', c.end_work_time - stop_time)
		else 0
	end
	-
	case 
		when start_time > c.start_work_time
		then date_part('hour', start_time - c.start_work_time)
		else 0
	end) -- корректировка рабочих часов начала и конца интервала
	-
	case
		when p.id = 4 
		then 9 * 9  
		else 0
	end -- количество праздничных дней в 4м интервале
	+
	case
		when p.id = 4 
		then 1 * 9 
		else 0
	end	-- 1 дополнительный рабочий день в 4м интервале
	as work_hrs
from
	periods as p
	inner join calc_table as c
	on p.id = c.id

Кодом пусть занимаются программисты ))

Вообще расчет количества недель довольно быстро гуглится

www.sqlines.com/postgresql/how-to/datediff

+ конечно забыл про неполные недели для интервалов. Полагаю нужно вычислить день недели начала и конца интервалов, исключить эти дни и посчитать по 5 дневке
Вообще по логике в каждом интервале отсекается день начала и день окончания. Считается количество рабочих дней в каждом интервале (для каждой недели 5 дней * на количество недель + доп рабочие дни — праздники) и умножается на 8. Потом прибавляются рабочие часы начала интервала (19-00 минус время начала) и конца интервала (10-00 плюс время окончания). То есть по сути задача сводится, на мой взгляд, к расчету количества рабочих недель
Это все идет от поверхностности. Чтобы разобраться в технологии и понять как правильно и можно ли использовать ее в проекте — нужны значительные временные затраты. А на аутстафе/аутсорсе нет на это времени. Им нужно здесь и сейчас и продать себя подороже, выкрикивая побольше заклинаний «микросервис», «кафка» или так делал амазон, гугл, фейсбук
Автор пишет буковки для компилятора, называя это «кодом». И не понимает зачем это нужно. Лично я понимаю людей, которые работают ради заработка или чтобы помочь другим людям. Но не понимаю тех, кто пишет буковки для компилятора и считает это смыслом
Похоже халявную кормушку прикрыли и придется затягивать пояса

riafan.ru/1179725-spacex-podala-v-sud-na-pravitelstvo-ssha
Как бы не секрет, что успех многих корпораций — полурабский труд своих сотрудников. Видимо массовых сокращений и 60 часовой рабочей недели недостаточно чтобы вытянуть «суперуспешную» корпорацию
Склонен верить, что это была небольшая комета. И комета сгорела в атмосфере, выделив огромное количество энергии и водяного пара. То, что кометы падают на планеты, уже наблюдалось в случае падения на Юпитер кометы Шумейкера Леви
Intel заключила с Apple соглашение в 2005 на использование их процессоров в Mac. Это, мне кажется, довольно сильно ударило по AMD.
В общем и целом статью можно резюмировать — используйте инструменты для решения конкретной задачи, а не «правильные» (true) инструменты. К сожалению, есть такая проблема, и она носит не технический, а социальный характер

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность