-- создаем таблицу Opers
CREATE TABLE OPERS (
tr_viol_id INTEGER PRIMARY KEY,
viol_oper_id_id INTEGER,
date_oper DATETIME,
viol_datetime DATETIME,
oper_code INTEGER,
refuse_code INTEGER,
isp_id INTEGER
);
-- заполняем таблицу Opers
INSERT INTO OPERS VALUES (0001, 10, '2018-04-01', '2018-04-01',29,0,85);
INSERT INTO OPERS VALUES (0002, 70,'2018-04-10', '2018-04-02',29,0,562);
INSERT INTO OPERS VALUES (0003, 56, '2018-04-20', '2018-04-03',548,0,863);
-- создаем таблицу Viols
CREATE TABLE VIOLS (
tr_viol_id INTEGER PRIMARY KEY,
viol_code INTEGER,
time_check DATETIME,
stage_code INTEGER,
refuse_code INTEGER,
camera_id INTEGER
);
-- заполняем таблицу Viols
INSERT INTO VIOLS VALUES (0001, 10, '2018-04-01', 10,29,1);
INSERT INTO VIOLS VALUES (0002, 100,'2018-04-02', 15,30,0);
INSERT INTO VIOLS VALUES (0003, 56, '2018-04-20', 1000,548,658);
-- делаем отбор по дате
SELECT time_check FROM VIOLS WHERE DATE (time_check) BETWEEN '2018-04-01' AND '2018-04-02';
SELECT viol_datetime FROM OPERS WHERE DATE (viol_datetime) BETWEEN '2018-04-01' AND '2018-04-02';
-- делаем запросы и выводим таблицу
SELECT
OPERS.viol_datetime AS 'Дата нарушения ПДД' ,
VIOLS.time_check AS 'Дата нарушения ПДД',
COUNT(VIOLS.time_check) AS "Число нарушений ПДД всего",
SUM(OPERS.refuse_code = 0) AS "Число нарушений ПДД у которых результирующий код обработки нарушения ПДД равен 0",
SUM(OPERS.oper_code = 29) AS "Число нарушений ПДД по которым была операция обработки тип 29",
SUM(OPERS.oper_code<>29 AND OPERS.refuse_code=0) AS "Число нарушений ПДД по которым не было операции обработки тип 29, а результирующий код обработки нарушения ПДД равен 0"
FROM OPERS
INNER JOIN VIOLS ON OPERS.tr_viol_id = VIOLS.tr_viol_id
GROUP BY OPERS.viol_datetime , VIOLS.time_check ;