EXEC SQL SELECT host_ip, syn INTO :syn_host, :syn_pkts FROM
(SELECT host_ip, syn FROM
(SELECT host_ip, sum(syn_cnt) AS syn FROM result_inf_in GROUP BY host_ip)ORDER BY 2 DESC)
(SELECT host_ip, syn FROM
(SELECT host_ip, sum(syn_cnt) AS syn FROM result_inf_in GROUP BY host_ip)ORDER BY 2 DESC)
일단 작성된대로 해석을 하면,
가장 안 쪽의 select 문인
(SELECT host_ip, sum(syn_cnt) AS syn FROM result_inf_in GROUP BY host_ip) 를 해석하면,,
result_inf_in 이라는 테이블에서 host_ip 와 syn_cnt 의 합계(= sum(syn_cnt) )를 구하는데,
syn_cnt 의 합을 구할 때는 host_ip 필드를 기준으로 하고 (GROUP BY host_ip), 즉, host_ip 가 같은 레코드들의 syn_cnt를 다 더하라는 의미이고요, 이때 sum(syn_cnt) 는 syn 이라는 이름(alias)으로 참조하겠다고 지정합니다. (sum(syn_cnt) AS syn)
이 결과는 그 바깥쪽 쿼리문의 테이블 대신에 쓰이고요, 편의상 tbl 이라고 하죠,
그 바깥쪽 쿼리문은
(SELECT host_ip, syn FROM tbl ORDER BY 2 DESC)
가 되는데,
tbl에서 host_ip, 와 syn 컬럼을 가져오는데 2번째 필드를 기준으로 정렬하고, (ORDER BY 2 ) 정렬은 내림차순으로 (DESC) 하라고 지정하는 것입니다.
전체 SQL 문은 그냥
EXEC SQL SELECT host_ip, sum(syn_cnt) INTO :syn_host, :syn_pkts
FROM result_inf_in
GROUP BY host_ip
ORDER BY 2 DESC
식으로 써 주셔도 될 듯 합니다.
근데, 여러 row가 생성될 것 같은데, syn_host 랑 syn_pkts 는 배열인가요? 배열이면 커서를 안 쓰고 한큐에 SELECT 때려도 되나요? 흠... 해 봐야겠군요.
틀린 문장 아닌가요?FROM뒤에 select문으로 테이블을 바로
틀린 문장 아닌가요?
FROM뒤에 select문으로 테이블을 바로 지정할 수 없을텐데...
dyn SQL조차도 테이블을 지정할때는 버퍼에 sql문을 미리 만들고나서 지정하는것으로 알고 있습니다만...
이거 작동하는 SQL맞나요? -_-)a
========================================
* The truth will set you free.
(SELECT host_ip, syn FROM (SELECT host
(SELECT host_ip, syn FROM
(SELECT host_ip, sum(syn_cnt) AS syn FROM result_inf_in GROUP BY host_ip)ORDER BY 2 DESC)
일단 작성된대로 해석을 하면,
가장 안 쪽의 select 문인
(SELECT host_ip, sum(syn_cnt) AS syn FROM result_inf_in GROUP BY host_ip) 를 해석하면,,
result_inf_in 이라는 테이블에서 host_ip 와 syn_cnt 의 합계(= sum(syn_cnt) )를 구하는데,
syn_cnt 의 합을 구할 때는 host_ip 필드를 기준으로 하고 (GROUP BY host_ip), 즉, host_ip 가 같은 레코드들의 syn_cnt를 다 더하라는 의미이고요, 이때 sum(syn_cnt) 는 syn 이라는 이름(alias)으로 참조하겠다고 지정합니다. (sum(syn_cnt) AS syn)
이 결과는 그 바깥쪽 쿼리문의 테이블 대신에 쓰이고요, 편의상 tbl 이라고 하죠,
그 바깥쪽 쿼리문은
(SELECT host_ip, syn FROM tbl ORDER BY 2 DESC)
가 되는데,
tbl에서 host_ip, 와 syn 컬럼을 가져오는데 2번째 필드를 기준으로 정렬하고, (ORDER BY 2 ) 정렬은 내림차순으로 (DESC) 하라고 지정하는 것입니다.
전체 SQL 문은 그냥
식으로 써 주셔도 될 듯 합니다.
근데, 여러 row가 생성될 것 같은데, syn_host 랑 syn_pkts 는 배열인가요? 배열이면 커서를 안 쓰고 한큐에 SELECT 때려도 되나요? 흠... 해 봐야겠군요.
댓글 달기