SQLize Online / PHPize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
--Name- сотрудник --Day_number- порядковый номер дня недели --Min- отсутствие на рабочем месте (мин.) --Diner_flag- признак отсутствия по причине обеда --Необходимо вывести суммарное количество времени, которое сотрудник отсутствовал на рабочем месте за исключением обеденных перерывов, а также среднее время обеда. --Формат: A 420 53 create table Test_bank_1 ( Name varchar(255), Day_number int, Min int, Diner_flag varchar(255) ) insert into Test_bank_1 (Name, Day_number, Min, Diner_flag ) values ('D', 1, 15, null), ('D', 1, 20, null), ('D', 1, 63, 'Y'), ('D', 2, 55, 'Y'), ('D', 2, 20, null), ('D', 2, 15, null), ('A', 1, 0, null), ('A', 1, 60, 'Y'), ('A', 1, 5, null), ('A', 1, 10, null), ('A', 2, 20, null), ('A', 2, 45, 'Y'); -- dd select Name, SUM(CASE WHEN Diner_flag is null THEN "Min" ELSE 0 END) absent_time, SUM(CASE WHEN Diner_flag is not null THEN "Min" ELSE 0 END) dinner_time, COUNT(Diner_flag) dinners_count, AVG(CASE WHEN Diner_flag is not null THEN "Min" ELSE null END) avg_dinner_time from Test_bank_1 group by Name;
Stuck with a problem? Got Error? Ask ChatGPT!
Copy Clear