SQLize Online / PHPize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
##В базе данных PG (Postgre) cуществуют 2 таблицы: 1. Таблица "opers", с операциями по обработке нарушений. В ней хранится информация по всем операциям обработки нарушений. | Column | Type | Description ---------------------+--------------------------------+--------------------------------------------------------+ | viol_oper_id | bigint (PK) | Идентификатор операции обработки нарушения ПДД | tr_viol_id | bigint | Идентификатор нарушения ПДД | oper_code | integer | Тип операции обработки нарушения ПДД | refuse_code | integer | Результирующий код операции обработки нарушения ПДД | isp_id | bigint | Идентификатор того, кто произвел обработку нарушения ПДД | date_oper | timestamp(0) without time zone | Дата и время операции обработки нарушения ПДД | viol_datetime | timestamp(0) without time zone | Дата и время нарушения ПДД 2. Таблица "viols", с нарушениями правил дорожного движения транспортными средствами. | Column | Type | Description --------------+--------------------------------+--------------------------------------------------+ | tr_viol_id | bigint (PK) | Идентификатор нарушения | viol_code | integer | Код нарушения ПДД | time_check | timestamp(0) without time zone | Дата и время нарушения ПДД | stage_code | integer | Этап обработки нарушения ПДД | refuse_code | integer | Результирующий код обработки нарушения ПДД | camera_id | integer | Идентификатор камеры зафиксировавший нарушение ПДД Есть задача: Подготовить выгрузку, содержащую информацию, за период нарушения ПДД с 2018-04-01 по 2018-04-20 с детализацией до даты нарушения. Выгрузка должна содержать атрибуты: Дата нарушения ПДД; Число нарушений ПДД всего; Число нарушений ПДД у которых результирующий код обработки нарушения ПДД равен 0; Число нарушений ПДД по которым была операция обработки тип 29; Число нарушений ПДД по которым не было операции обработки тип 29, а результирующий код обработки нарушения ПДД равен 0; Вам необходимо: 1. Описать последовательность действий для выполнения задачи, постарайтесь развернуто ответить почему так и в такой последовательности. 2. Для этой задачи подготовьте все варианты запросов, которые позволят произвести соответствующую выгрузку. 3. Укажите лучший вариант запроса для данной задачи, дайте комментарий почему именно такой запрос. CREATE TABLE OPERS ( tr_viol_id INTEGER PRIMARY KEY, isp_id INTEGER, date_oper DATETIME, viol_datetime DATETIME ); -- insert INSERT INTO OPERS VALUES (0001, 10, '2022-01-20', '2018-04-01'); INSERT INTO OPERS VALUES (0002, 100,'2022-01-20', '2018-04-20'); INSERT INTO OPERS VALUES (0003, 56, '2022-01-20', '2018-10-20'); INSERT INTO OPERS VALUES (0004, 156, '2024-01-20', '2017-10-20'); -- fetch SELECT * FROM OPERS WHERE DATE (date_oper) BETWEEN '2011-04-01' AND '2025-04-20'; CREATE TABLE VIOLS ( tr_viol_id INTEGER PRIMARY KEY, viol_code INTEGER, time_check DATETIME, stage_code INTEGER ); -- insert INSERT INTO VIOLS VALUES (0001, 10000, '2018-04-01',355); INSERT INTO VIOLS VALUES (0002, 10990,'2018-04-20',566); INSERT INTO VIOLS VALUES (0003, 56456, '2022-01-20',455); INSERT INTO VIOLS VALUES (0004, 159516, '2024-01-20',4585); INSERT INTO VIOLS VALUES (0005, 853116, '2024-11-20',485); SELECT OPERS.tr_viol_id, OPERS.isp_id,OPERS.date_oper,OPERS.viol_datetime,VIOLS.tr_viol_id,VIOLS.viol_code,VIOLS.time_check,VIOLS.stage_code FROM OPERS RIGHT JOIN VIOLS ON OPERS.tr_viol_id=VIOLS.tr_viol_id; SELECT * FROM VIOLS WHERE DATE (time_check) BETWEEN '2011-04-01' AND '2024-11-20'; ##SELECT tr_viol_id,viol_code,time_check,stage_code FROM VIOLS WHERE viol_code > 10000 SELECT SUM(viol_code) FROM VIOLS
Stuck with a problem? Got Error? Ask ChatGPT!
Copy Clear