Obsidian/Recognition/Work Related/1.업무메모/2022.06/2022-06-06.md

174 lines
4.2 KiB
Markdown
Raw Permalink Normal View History

2023-08-14 16:19:25 +00:00
-- 요약,
육상국 가장 최근 송신 방송(일시, ID, 명칭)
마지막 수신 방송 (, ID, 방송명, 일시(추정), 수신위치(추정), 통달거리(추정))
방송 송신시각 - 선박 위치수신시각 차이
-- 최근 24시간 이내 수신한 방송 List
위치보고 일시, 방송ID, 방송명, 수신위치, 통달거리
※선박의 수신일시, 수신위치, 통달거리는 추정치이며 오차가 발생할 수 있음.
### 테스트 자료 복사
```SQL
INSERT INTO TB_MSGTXID_H
SELECT '20220608', CREATE_HH, MSG_TXID , MSG_GBN, MSSAGE_ID , INSERT_DT
FROM TB_MSGTXID_H
WHERE CREATE_DT = '20220607'
INSERT INTO TB_LC_FSHOPRRPT_202206
SELECT slot_no,
report_dt + 1,
modem,
fqnc,
la,
lo,
la_bfe10,
lo_bfe10,
ale_reflct_yn,
btry_sttus,
last_rcv_brdcst_id,
report_day,
updt_flag,
fshopr_ty,
totcnt,
sn,
kdfsh,
totalcat,
insert_dt
FROM TB_LC_FSHOPRRPT_202206
WHERE TO_char(REPORT_DT + INTERVAL '9' HOUR , 'yyyymmdd') LIKE '20220607'
```
```SQL
/* 행 구분 ID (1,2,3)
* 행 구분명 (1:최근 송신 방송/2:마지막 수신 방송/3:24시간이내 수신방송 List)
* row1-> 방송 송신 일시 / row2,3-> 방송 수신 일시(추정, 방송송신이후 위치수신일시)
* 방송인덱스 (년월+시간구분+Index)
* 방송구분명
* 요청테이블 MSSAGE_ID
* latitude
* longitude
* 통달거리(null고정, 상황관제시스템에서 계산)
* 방송수신에 소요된 시간
*/
SELECT gubun AS row_id
, gubun2 AS row_gbn
, brd_date
, brd_index
, brd_gbn
, msg_id
, brd_la
, brd_lo
, brd_reach
, brd_time
FROM TABLE(FC_BRDCST_RCV_LIST(1146))
------------------------------------------------------------
-- 최근 송신 방송
SELECT tmh.insert_dt
, tmh.CREATE_DT
, tmh.CREATE_HH
, tmh.MSG_TXID AS MSG_TXID
, tmh.MSG_GBN
FROM TB_MSGTXID_H tmh
WHERE tmh.INSERT_DT >= sysdate - INTERVAL '24' HOUR
AND tmh.INSERT_DT <= sysdate
ORDER BY tmh.insert_dt DESC
-- 마지막 수신 방송
SELECT a.REPORT_DT + INTERVAL '9' HOUR AS REPORT_DT_KST
, a.la
, a.lo
, a.last_rcv_brdcst_id
, a.modem
, a.fqnc
FROM (
SELECT *
FROM TB_LC_FSHOPRRPT_202206 b
WHERE b.last_rcv_brdcst_id <> 0
AND b.slot_no = 1146
and b.report_dt <= sysdate - interval '9' hour
ORDER BY REPORT_DT DESC
) A
WHERE rownum = 1
-- 마지막 수신 방송의 육상국 송신정보
SELECT insert_dt, CREATE_DT||'-'||CREATE_HH||'-'||MSG_TXID AS msg_idx, MSG_GBN, MSSAGE_ID
--INTO dBrod_date, vObj.brd_index, vObj.brd_gbn, vObj.msg_id
FROM TB_MSGTXID_H
WHERE CREATE_DT = to_char(TO_TIMESTAMP(:ar_report_dt_kst, 'yyyy-mm-dd hh24:mi:ss.FF') , 'yyyymmdd')
AND CREATE_HH <= to_char(TO_TIMESTAMP(:ar_report_dt_kst, 'yyyy-mm-dd hh24:mi:ss.FF') , 'hh24')
AND CREATE_HH + 8 > to_char(TO_TIMESTAMP(:ar_report_dt_kst, 'yyyy-mm-dd hh24:mi:ss.FF') , 'hh24')
AND MSG_TXID = :ar_idx
-- 최근 24시간내 송신한 방송
SELECT tmh.insert_dt
, tmh.CREATE_DT
, tmh.CREATE_HH
, tmh.MSG_TXID AS MSG_TXID
, tmh.MSG_GBN
FROM TB_MSGTXID_H tmh
WHERE tmh.INSERT_DT >= sysdate - INTERVAL '24' HOUR
AND tmh.INSERT_DT <= sysdate
ORDER BY tmh.insert_dt DESC
-- 송신된 방송중 해당 선박이 수신 한 방송
SELECT (REPORT_DT + INTERVAL '9' HOUR) AS REPORT_DT_KST
, a.LAST_RCV_BRDCST_ID
, a.la
, a.lo
, a.modem
FROM (
SELECT *
FROM TB_LC_FSHOPRRPT_202206 b
WHERE b.slot_no = 1146
AND b.report_dt >= to_date('20220607'||'08', 'yyyymmddhh24') - INTERVAL '9' HOUR
-- AND to_char(b.report_dt + INTERVAL '9' HOUR , 'hh24') < to_char(to_number('08') + 8, 'FM09')
AND b.report_dt <= sysdate - INTERVAL '9' HOUR
AND 1 = b.last_rcv_brdcst_id
ORDER BY b.report_dt ) a
WHERE rownum = 1
```
# Create Type
```sql
DROP TYPE BRDCST_RCV_COLLECTION_TYPE;
DROP TYPE BRDCST_RCV_TYPE;
CREATE TYPE BRDCST_RCV_TYPE AS OBJECT
(
GUBUN varchar2(100),
GUBUN2 varchar2(100),
brd_date DATE,
brd_index varchar2(100),
brd_gbn varchar2(100),
msg_id varchar2(100),
brd_la NUMBER,
brd_lo NUMBER,
brd_reach NUMBER,
brd_time NUMBER,
brd_modem varchar2(100)
);
CREATE TYPE BRDCST_RCV_COLLECTION_TYPE AS TABLE OF BRDCST_RCV_TYPE;
SELECT *
FROM TABLE(FC_BRDCST_RCV_LIST(704))
```