MySQL 을 이용 하여 열 에 있 는 서로 다른 값 의 수량 을 통계 하 는 방법 예시

2559 단어 mysql수량
머리말
본 고가 실현 한 이 수 요 는 사실 매우 보편적이다.예 를 들 어 우 리 는 사용자 가 어느 경로 에서 등 록 했 는 지 표시 하 는 사용자 출처 표 가 존재 한다.표 구 조 는 다음 과 같다.

그 중에서 origin 은 사용자 소스 로 그 중의 값 은 아이 폰,안 드 로 이 드,웹 세 가지 가 있 는데 지금 은 이 세 가지 채널 로 등 록 된 사용자 수 를 각각 통계 해 야 한다.
해결 방안

SELECT count(*)
FROM user_operation_log
WHERE origin = 'iPhone';
SELECT count(*)
FROM user_operation_log
WHERE origin = 'Android';
SELECT count(*)
FROM user_operation_log
WHERE origin = 'Web';
where 문장 으로 각자 의 수량 을 각각 통계 하 다.
이렇게 조회 하 는 양 이 좀 많 습 니 다.만약 이 값 이 10 개 라면 비슷 한 문 구 를 10 개 더 써 야 합 니 다.귀 찮 습 니 다.
한 마디 로 끝 나 는 게 없 을까요?그래서 자 료 를 좀 찾 아 봤 어 요.
해결 방안
우 리 는 count 가 줄 수 를 통계 할 수 있 을 뿐만 아니 라 열 값 의 수량 도 통계 할 수 있다 는 것 을 알 고 있다.예 를 들 어:
통계 useroperation_log 몇 줄 이 있 습 니까?

SELECT count(*) FROM user_operation_log
origin 이 열 값 이 NULL 이 아 닌 수 를 집계 합 니 다.

SELECT count(origin) FROM user_operation_log
그래서 우 리 는 이 특성 을 이용 하여 위의 수 요 를 실현 할 수 있다.
첫 번 째 쓰기(count 로 구현)

SELECT
 count(origin = 'iPhone' OR NULL) AS iPhone,
 count(origin = 'Android' OR NULL) AS Android,
 count(origin = 'Web' OR NULL)  AS Web
FROM user_operation_log;
검색 결과

두 번 째 쓰기(sum 로 구현)

SELECT
 sum(if(origin = 'iPhone', 1, 0)) AS iPhone,
 sum(if(origin = 'Android', 1, 0)) AS Android,
 sum(if(origin = 'Web', 1, 0))  AS Web
FROM user_operation_log;
검색 결과

세 번 째 쓰기(sum 바 꾸 기)

SELECT
 sum(origin = 'iPhone') AS iPhone,
 sum(origin = 'Android') AS Android,
 sum(origin = 'Web')  AS Web
FROM user_operation_log;
검색 결과

네 번 째 표기 법(금 을 파 는 사용자 제 프 의 답)

SELECT origin,count(*) num FROM user_operation_log GROUP BY origin;
검색 결과

이로써 우리 의 요구 에 도달 했다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기