하나의 쿼리문으로 컬럼내 모든값의 개수를 count

하나의 쿼리문으로 컬럼내 모든값의 개수를 count

QA

하나의 쿼리문으로 컬럼내 모든값의 개수를 count

본문


SELECT `xm_buy`, COUNT(*) FROM g5_write_off where `xm_no` < '11' GROUP BY `xm_buy`;
SELECT `xm_buy`, COUNT(*) FROM g5_write_off where `xm_no` < '21' GROUP BY `xm_buy`
SELECT `xm_buy`, COUNT(*) FROM g5_write_off where `xm_no` < '31' GROUP BY `xm_buy`

 

위와 같이 xm_no 이하 조건으로 해서 ..컬럼내 모든 값을 카운트 합니다.

쿼리문을 하나로 만들지 못해서..저렇게 3개를 작성해서 짜다보니..

 

위 3개의 쿼리를 하나의 쿼리로 만들수 있을까 해서요..

부탁드립니다.

이 질문에 댓글 쓰기 :

답변 2

범위를 정하신느것 같은데


 
$sql = "
    SELECT `xm_buy10` type, COUNT(*) cnt FROM g5_write_off where `xm_no` < '11' 
    union all 
    SELECT 'xm_buy20' type,  COUNT(*) cnt FROM g5_write_off where `xm_no` > '10 and `xm_no`< '21' 
    union all 
    SELECT `xm_buy30` type , COUNT(*) cnt FROM g5_write_off where `xm_no` > '20 and  `xm_no` < '31' 
";

와 같이 작성하시면 gorup by 가 필요없을것 같네요

https://zetawiki.com/wiki/DB_%EC%A4%91%EB%B3%B5_%EA%B0%9C%EC%88%98_%ED%99%95%EC%9D%B8

위 주소에 있는것을 응용하려고 하는거라서요.
즉, 해당컬럼내 내용별 갯수를 모두 가져오려고 합니다.

기본 SELECT 컬럼명, COUNT(*) FROM 테이블명 GROUP BY 컬럼명;

이 부분에서 where 조건을 넣은거구요.  각 조건에 맞는값을 개별 쿼리로 구현되는데...
하나의 쿼리로 묶을수 없을까 해서요..

쿼리를 3개를 돌리시나 1개를 복잡하게 돌리시나

결과상의 시간 차이는 없으실겁니다.

위의 방식도 문제가 되지않을듯하니

직관적으로 쉽게 코드를 볼수있도록 위에서 사용한 방식도 나쁘지않으십니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 530
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT