Obsidian/Recognition/Work Related/프로젝트/D-MHFH/유지보수/데이터 분석.md

6.5 KiB

(토글)수동위치보고요청 패킷 분석


-- 요청안한 자료 (기상예보)
SELECT distinct PACKET5 
FROM TMP_REQUEST tr 
WHERE  not EXISTS  (
SELECT 'x' FROM TB_PASSIVLC_REQUST
WHERE mssage_id = tr.PACKET5 )
ORDER BY PACKET5

20220202020015018
20220202020015818
20220202020016590
20220202020017318
20220202130015013
20220202130015802
20220202130016536
20220202130017272
20220202190015030
20220202190015816
20220202190016545
20220202190017300

-- 실 DB 확인
SELECT *
FROM TB_PASSIVLC_REQUST
WHERE MSSAGE_ID LIKE '2022020202001501%'

--------------------------------------------------------------

/*2.2일자 위치요청한 지료중 실패자료 분석 */
-- 삼영2일자 자료중 육상국 DB에 실패 처리된 자료 건수
-- 전체 91row, 103건
-- 완전실패 12row, 24건
SELECT *
FROM (
	SELECT SAMENSS_SND_DT  , 
	     count(*) AS cnt,
	     sum(CASE WHEN FAILR_MODEM_LIST IS NULL THEN 1 ELSE 0 END ) AS scnt,
	     sum(CASE WHEN FAILR_MODEM_LIST IS NULL THEN 0 ELSE 1 END ) AS fcnt
	FROM TB_PASSIVLC_REQUST
	WHERE MSSAGE_ID IN 
	( SELECT PACKET5
	FROM TMP_REQUEST tr 
	WHERE PACKET1  = 30 )
	GROUP BY SAMENSS_SND_DT 
	ORDER BY SAMENSS_SND_DT 
) a
WHERE fcnt >= 1

-- 실패건중 육상국 요청자료
SELECT PROCESS 
FROM TB_PASSIVLC_REQUST tpr 
WHERE SAMENSS_SND_DT IN (
SELECT SAMENSS_SND_DT
FROM (
	SELECT SAMENSS_SND_DT  , 
	     count(*) AS cnt,
	     sum(CASE WHEN FAILR_MODEM_LIST IS NULL THEN 1 ELSE 0 END ) AS scnt,
	     sum(CASE WHEN FAILR_MODEM_LIST IS NULL THEN 0 ELSE 1 END ) AS fcnt
	FROM TB_PASSIVLC_REQUST
	WHERE MSSAGE_ID IN 
	( SELECT PACKET5
	FROM TMP_REQUEST tr 
	WHERE PACKET1  = 30 )
	GROUP BY SAMENSS_SND_DT 
	ORDER BY SAMENSS_SND_DT 
) a
WHERE fcnt >= 1
) 
ORDER BY SAMENSS_SND_DT, SND_DT 


-- 특정일자 실패자료 + 요청LOG + 응답LOG
SELECT *
FROM (
	SELECT '1' AS gbn, 'DB' AS gbnnm, a.mssage_id, a.mmsi, a.slot_no, a.modem_list, a.failr_modem_list, a.process,
	      to_char(a.process_dt, 'yyyy-mm-dd hh24:mi:ss') AS process_dt, 
	      to_char(a.insert_dt, 'yyyy-mm-dd hh24:mi:ss') AS insert_dt, 
	      to_char(a.snd_dt, 'yyyy-mm-dd hh24:mi:ss') AS snd_dt, 
	      a.SAMENSS_SND_DT,
	       '' AS  packet
	FROM tmp_PASSIVLC_REQUST_fail a
	UNION ALL
	SELECT  '2' AS gbn,'요청 LOG(실패모뎀)' AS gbnnm, PACKET5 , '', null, '', PACKET2 AS failr_modem_list, null, '', '', PACKET12, ''
	     , PACKET0
	       ||nvl2(PACKET1, ','||PACKET1, '')
			||nvl2(PACKET2, ','||PACKET2, '')
			||nvl2(PACKET3, ','||PACKET3, '')
			||nvl2(PACKET4, ','||PACKET4, '')
			||nvl2(PACKET5, ','||PACKET5, '')
			||nvl2(PACKET6, ','||PACKET6, '')
			||nvl2(PACKET7, ','||PACKET7, '')
			||nvl2(PACKET8, ','||PACKET8, '')
			||nvl2(PACKET9, ','||PACKET9, '')
			||nvl2(PACKET10,','||PACKET10, '')
			||nvl2(PACKET11,','||PACKET11, '') AS packet
	FROM TMP_REQUEST_log a
	WHERE PACKET1 = '28'
	AND EXISTS (
		SELECT 'o' 
		FROM tmp_PASSIVLC_REQUST_fail
		WHERE mssage_id = a.PACKET5
		AND instr(failr_modem_list, a.PACKET2) > 0)
	UNION ALL
	SELECT  '3' AS gbn,'응답 LOG(실패모뎀)' AS gbnnm, PACKET5 , '', null, '', PACKET2 AS failr_modem_list, 0, '', '', PACKET12, ''
	       , PACKET0
	       ||nvl2(PACKET1, ','||PACKET1, '')
			||nvl2(PACKET2, ','||PACKET2, '')
			||nvl2(PACKET3, ','||PACKET3, '')
			||nvl2(PACKET4, ','||PACKET4, '')
			||nvl2(PACKET5, ','||PACKET5, '')
			||nvl2(PACKET6, ','||PACKET6, '')
			||nvl2(PACKET7, ','||PACKET7, '')
			||nvl2(PACKET8, ','||PACKET8, '')
			||nvl2(PACKET9, ','||PACKET9, '')
			||nvl2(PACKET10,','||PACKET10, '')
			||nvl2(PACKET11,','||PACKET11, '') AS packet
	FROM TMP_REQUEST_log a
	WHERE PACKET1 = '30'
	AND EXISTS (
		SELECT 'o' 
		FROM tmp_PASSIVLC_REQUST_fail
		WHERE mssage_id = a.PACKET5
		AND instr(failr_modem_list, a.PACKET2) > 0)
) a
ORDER BY  mssage_id, decode(gbn, '1', '0', failr_modem_list), gbn



SELECT *
FROM TB_PASSIVLC_REQUST
WHERE SAMENSS_SND_DT = '20220130181603964'

SELECT *
FROM TB_PASSIVLC_REQUST
WHERE MSSAGE_ID  = '20220130202309606'

SELECT *
FROM TMP_REQUEST tr 
WHERE PACKET5  = '20220130202309606'

SELECT *
FROM TMP_REQUEST_log tr 
WHERE PACKET5  = '20220130170334367'

(토글)수동위치보고요청 건수 집계

-- 총 선박 : 850
SELECT count(*) FROM TB_SHIP


-- 하루 총 요청 건수 : 3,870
SELECT count(*)
from TB_PASSIVLC_REQUST
WHERE TO_char(insert_dt, 'yyyymmdd') = '20220411'


-- 월별 요청건수 총합, 평균
SELECT substr(INSDATE, 1,6) AS yyyymm, sum(cnt) AS mcnt, round(avg(cnt)) mavg 
FROM (
	SELECT TO_char(insert_dt, 'yyyymmdd') AS insdate, count(*) AS cnt
	FROM TB_PASSIVLC_REQUST
	WHERE TO_char(insert_dt, 'yyyymmdd') like '2022%'
	GROUP BY TO_char(insert_dt, 'yyyymmdd')
	ORDER BY insdate DESC, cnt DESC ) a
GROUP BY substr(INSDATE, 1,6)
ORDER BY 1


-- 일자+선박별
SELECT TO_char(insert_dt, 'yyyymmdd') AS insdate, SLOT_NO 
    , sum(CASE WHEN requst_at = 0 THEN 1 ELSE 0 end) AS "사용자요청"
    , sum(CASE WHEN requst_at IN (1, 2) THEN 1 ELSE 0 end) AS "GW요청"
    , count(*) AS "요청합계"
    , sum(CASE WHEN process IN (0, 1) THEN 1 ELSE 0 end) AS "미처리"
    , sum(CASE WHEN process NOT IN (0, 1) THEN 1 ELSE 0 end) AS "처리"
    , sum(CASE WHEN process = 0 THEN 1 ELSE 0 end) AS "처리대기"
    , sum(CASE WHEN process = 1 THEN 1 ELSE 0 end) AS "처리중"
    , sum(CASE WHEN process = 2 THEN 1 ELSE 0 end) AS "완료"
    , sum(CASE WHEN process = 8 THEN 1 ELSE 0 end) AS "일부실패"
    , sum(CASE WHEN process = 9 THEN 1 ELSE 0 end) AS "실패"
FROM TB_PASSIVLC_REQUST
WHERE TO_char(insert_dt , 'yyyymm') in ('202202', '202203')
GROUP BY TO_char(insert_dt, 'yyyymmdd'), SLOT_NO
ORDER BY insdate




-- 2월 요청플래그별 건수(선박)
SELECT TO_char(insert_dt, 'yyyymmdd') AS insdate, SLOT_NO 
    , count(*) AS "총 건수"
    , sum(CASE WHEN requst_at = 0 THEN 1 ELSE 0 end) AS "사용자"
    , sum(CASE WHEN requst_at IN (1, 2) THEN 1 ELSE 0 end) AS "자동합계"
    , sum(CASE WHEN requst_at = 1 THEN 1 ELSE 0 end) AS "30분"
    , sum(CASE WHEN requst_at = 2 THEN 1 ELSE 0 end) AS "60분"
FROM TB_PASSIVLC_REQUST
WHERE TO_char(insert_dt, 'yyyymmdd') like '202203%'
GROUP BY TO_char(insert_dt, 'yyyymmdd'), SLOT_NO 
ORDER BY insdate


/* 실제로 30분 단위로 수동위치 요청하는가? -> O*/

-- 60분요청 확인
SELECT *
FROM TB_PASSIVLC_REQUST
WHERE TO_char(insert_dt, 'yyyymmdd') = '20220412'
--AND REQUST_AT = 2
AND SLOT_NO  = 726
ORDER BY insert_dt, MSSAGE_ID 

-- 특정선박의 자동수신위치 이력
SELECT DISTINCT REPORT_DT 
FROM TB_LAST_LC_202204
WHERE SLOT_NO = 726
AND to_char(INSERT_DT, 'yyyymmdd') LIKE '20220412'
ORDER BY 1