채택완료

쿼리 관련 질문 드리니다.

안녕하세요

조인 후에 중복 제거를 위해 group by 하는되요

group by  쿼리 관련 질문드립니다.

> total count 방법 조언 문의 드립니다.

** 아래는 쿼리 샘플 및 설명입니다.

Copy
SELECT *  FROM 050_cdr A
    INNER  JOIN contel B ON A.vn=B.tel 
WHERE B.id is NOT NULL
GROUP BY A.cdrNo

-- 050_cdr (050 전화 연결된 상태)
-- contel (상담전화)
-- A.vn (050 전화번호), B.tel (매칭된 050 전화번호), B.id (상담전화 고유번호), A.cdrNo(050 고유번호)
 
|

답변 5개 / 댓글 1개

채택된 답변
+20 포인트

Group by 는 묶는 기준점을 명시하는 사항입니다.

그외에는 전부 카운트가 가능하죠

위에명시하신 내용으로는 카운트를 하고 싶은 기준을 알기 어렵습니다.

cdrNo 를 기준으로 추출하고싶은것들을 하나씩 추려서 카운트 하는게 가장 효과적입니다.

select a.cdrNo, count(A.vn) vn_cnt, count(B.tel) B_tel_cnt ...

from 050_cdr A

    INNER JOIN contel B ON A.vn=B.tel and B.id is NOT NULL  --B는 join된 테이블이라서 on 뒤에 명시하는게 낫습니다.

GROUP BY A.cdrNo

형태로 접근가능합니다.

SELECT count(distinct cdrNo) as cnt
FROM 050_cdr A
    INNER  JOIN contel B ON A.vn=B.tel 
WHERE B.id is NOT NULL

---------

이렇에 해서 전체 갯수는 구했는되요

데이터량이 많아 질 경우 느려 질 수 있다고하네요...  

답변에 대한 댓글 1개

조인 조건과 cdrNo 등을 인덱스로 만들어 주세요.
2021-08-20 (금) 13:09:48

내용을 잘 모르니,

한번 해 보신 query문을 올려 보세요.

group by를 사용하면 그룹별로 카운트할 수 있죠.

전체를 카운트하려면 전체 카운트 쿼리를 한번 더 써야 할 것 같네요.

2021-08-20 (금) 13:06:37

inner join일 경우

B.id is NOT NULL

조건은 불필요합니다.

답변을 작성하려면 로그인이 필요합니다.