메인 테이블 사용자 테이블
id 이름 전화(연관 필드)
통화 기록 테이블
ID 전화(연관 필드) ot_phone 시간 유형(수신 및 발신 통화) input_time
문의 양식
id c_id 전화
회사 테이블
c_id 이름
모든 사람의 전화 통화 수를 계산하는 방법(목록 제한 0, 10)
수신 전화 수
발신 전화 수
현지 전화 수
시외 전화 수
총 수신 전화 수
총 발신 전화 수
일치하는 회사 수(주로 연락처 테이블의 전화기는 동일한 전화기이지만 다른 회사에 해당하기 때문에 왼쪽 조인 합계() 데이터가 정확하지 않습니다.)
회사의 통화 시간을 일치시키세요
.... .
주된 문제는 연락처 테이블의 전화번호가 고유하지 않고 중복된 전화번호가 있다는 것입니다. 예를 들어 한 사람이 두 회사에 근무하는 경우
leftjoin sum 후
회사에 중복된 데이터가 있고 데이터가 부정확합니다
사실 연락처 테이블폰 중복을 제거한 다음 다른 테이블과 합칠까도 생각했는데 속도가 너무 느려서 50초 정도 걸릴 것 같아요
연락처 테이블이 50,000위안이 넘네요
이건 SQL 하나로는 해결이 안되는 것 같습니다
최종 결과
는
id name 전화 in_num(수신 전화 수) out_num(발신 전화 수) local_phone_num(지역 번호) .....
23 '小白' 15523232323 45 120 30 ....과 유사합니다. .
24 '소세' 18823232323 70 93 41 ......
우선 국내번호와 외국번호를 정의하는 필드가 있어야 하고, 통화 기록 없이 번호를 표시해야 하는지 여부가 필요하다면 다음 SQL을 Left Join으로 변경하고 해당 값에 대해 Null 처리를 수행합니다. 오른쪽 표에 없으면 직접 사용하셔도 됩니다
으아아아추가하려면, 테이블 b의 통화 시간이 통계적 int 유형의 분이 아닌 경우 변환해야 할 수도 있습니다
다음 SQL을 실행하면 다음과 같은 결과를 얻을 수 있습니다. (귀하의 질문에서 예상되는 결과가 약간 불분명합니다.)
SQL
으아악외부 조인 쿼리를 사용할 수 있습니다