【SQL기초】세대마다 인원수를 표시한다
소개
이번에는 MySQL에서 세대별 인원수를 표시하는 방법에 대해 정리합니다.
(참고) 데이터 분석 스킬 체크
카테고리
프로그래밍
레벨
★☆☆
체크 항목
SQL로 간단한 SELECT문을 기술·실행할 수 있다(부질의를 포함하지 않는, 2테이블 정도의 조인과 간단한 WHERE조건을 포함한 SELECT문)
사용할 데이터
이번에는 다음 데이터로 연습합니다.
이름
age
니노미야
22
마츠모토
24
나카이
22
기무라
32
카토리
29
사쿠라이
22
오카다
25
나가세
23
미야케
36
모리타
35
오노
40
쿠사나기
44
이나가키
33
GROUP BY를 사용해보기
먼저 GROUP BY에서 각 연령의 인원수를 살펴보겠습니다. 20대가 많네요.
SELECT
age AS 年齢,
COUNT(*) AS 人数
FROM
table_name
GROUP BY age;
Where로 조건을 좁히기
다음과 같이 WHERE를 결합합니다.
이 방법이라면 'age'열에서 10, 20, 30, 40세 딱 맞는 데이터를 검색하여 카운트해 줍니다.
SELECT
age AS 年齢,
COUNT(*) AS 人数
FROM
table_name
WHERE
age = 10 OR age = 20 OR age = 30 OR age = 40 OR age = 50
GROUP BY age;
DIV를 사용하여 그룹화
'age'열의 숫자를 DIV를 사용하여 10으로 나누고 잘라낸 다음 그룹화하여
각 그룹의 데이터 수를 계산합니다.
예를 들어, 20~29의 수치는 모두 2가 되므로 동일 그룹으로 간주됩니다.
SELECT
age AS 年代,
COUNT(*) AS 人数
FROM
table_name
GROUP BY
age DIV 10;
그룹별로 가장 낮은 수치가 셀에 있기 때문에, 이대로는 데이터량이 적을 때는 주의가 필요합니다. 예를 들어 20대에서도 가장 낮은 숫자가 23인 경우에는 23이 표시됩니다.
CONCAT 함수를 사용하여 인덱스 생성
그럴 때는 CONCAT 함수를 사용하여 색인이 될 열을 만듭니다.
SELECT
CONCAT( (age DIV 10) * 10, "代") AS 年代,
COUNT(*) AS 人数
FROM
table_name
GROUP BY
age DIV 10
참고 htp // 우야마자 k. 하테나 bぉg. 코m/엔트리/2017/08/18/144725
CASE 문에서보다 유연하게 숫자 범위 지정
18세 이하 등 범위 지정이 유연하게 필요한 경우에는 다음과 같은 방법이 필요합니다.
그 밖에 더 좋은 방법이 있으면 알려주세요!
SELECT
CASE
WHEN age <18 THEN 'Under 18'
WHEN age between 18 AND 24 THEN '18-24'
WHEN age between 25 AND 34 THEN '25-34'
WHEN age between 35 AND 44 THEN '35-44'
END AS 年代,
Count(*) AS 人数
FROM
table_name
GROUP BY 年代;
참고 htps : // 놀라운 l. 코m/쿠에 s치온 s/51772
Reference
이 문제에 관하여(【SQL기초】세대마다 인원수를 표시한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sai-san/items/8901468713cfe28adfe2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)