-
SQL COUNT()로 데이터 분석 시작하기 : 숫자 세기🐬 MySQL/MySQL 함수 2024. 11. 28. 17:13728x90
2024.12.01 - [데이터베이스/MySQL 실습문제] - COUNT() 함수를 이용한 연습문제 10개
SQL COUNT(): 데이터 세기의 마법사
SQL에서 가장 많이 사용되는 함수 중 하나인 COUNT()에 대해 알아보겠습니다.
COUNT()는 데이터베이스에서 행의 수를 세는 간단하면서도 강력한 도구입니다.
COUNT()란 무엇인가요?
COUNT() 함수는 지정된 조건에 맞는 행의 수를 반환합니다.
쉽게 말해, "이 조건에 맞는 데이터가 몇 개나 있나요?"라는 질문에 답해주는 함수입니다.
기본 사용법
COUNT()의 가장 기본적인 형태는 이렇습니다.
SELECT COUNT(*) FROM table_name; 이 쿼리는 테이블의 모든 행의 수를 표시해줍니다.
실제 사용 예시
전체 인원 수 표시
SELECT COUNT(*) AS total_customers FROM customers;
특정 조건의 수 표시
SELECT department, count(*) as cnt from employees WHERE department="HR"; department컬럼에서 HR 부서는 몇명인인지 구하는 쿼리
중복 제거 후 고유한 값의 수 표시
SELECT count(DISTINCT department) from employees; department 파트에 부서는 몇개인가? DISTINCT = 중복값제거 키워드
COUNT()의 다양한 활용
NULL 값 제외하기 된 수를 표시
SELECT COUNT(email) AS customers_with_email FROM customers; 이 쿼리는 email이 NULL이 아닌 고객의 수 표시합니다.
COUNT()는 기본적으로 NULL 값을 포함하지 않습니다.
조건부 카운팅
SELECT COUNT(*) AS total_orders, COUNT(CASE WHEN status = 'Completed' THEN 1 END) AS completed_orders FROM orders; 이 쿼리는 전체 주문 수와 완료된 주문 수를 동시에 계산합니다. 설명 CASE WHEN 조건1 THEN 결과1(만약 조건1이 맞다면, 결과1을 보여줘) WHEN 조건2 THEN 결과2(그게 아니고 조건2가 맞다면, 결과2를 보여줘) ... ELSE 기본결과(위의 조건들이 모두 아니라면, 기본결과를 보여줘) END
주의사항
- 성능: 대량의 데이터에서 COUNT(*)는 시간이 오래 걸릴 수 있습니다.
- 인덱스 활용: COUNT(*)는 인덱스를 활용할 수 없지만, 특정 열을 지정하면 인덱스를 사용할 수 있습니다.
- 정확성: 트랜잭션 중에 COUNT()를 사용할 때는 결과가 변할 수 있으니 주의해야 합니다.
트랜잭션이란?(더보기 클릭)
더보기트랜잭션(Transaction)은 컴퓨터나 데이터베이스에서 하나의 작업 단위를 이루는 동작 묶음
예)
- 은행 이체
- A 계좌에서 10만 원 출금 → B 계좌로 10만 원 입금
- 중간에 시스템이 꺼지거나 오류가 나도 '둘 다 완료'되거나, 아니면 '아무 작업도 되지 않음'
- 온라인 쇼핑 결제
- 재고 확인 → 결제 처리 → 주문 기록 생성
- 이 과정 중 하나라도 실패하면 모든 작업이 취소
트랜잭션의 핵심은 이 작업들이 완벽히 처리되거나(성공), 아예 아무 일도 없었던 것처럼(실패) 처리
이처럼 트랜잭션은 데이터가 항상 신뢰할 수 있는 상태로 유지되도록 보장해 주는 개념
트랜잭션의 특징 (ACID)
- 원자성(Atomicity): 트랜잭션의 모든 작업이 성공하거나, 하나라도 실패하면 전부 취소. (예: 돈이 송금되지 않았다면 출금도 취소)
- 일관성(Consistency): 트랜잭션이 끝난 뒤에도 데이터가 유효한 상태로 유지. (예: 계좌 잔액 합계는 변하지 않아야 함)
- 격리성(Isolation): 동시에 여러 트랜잭션이 실행될 때 서로 간섭하지 않음. (예: 다른 사람의 송금 작업이 내 작업에 영향 주지 않음)
- 지속성(Durability): 트랜잭션이 성공적으로 끝나면 결과가 영구적으로 저장. (예: 송금 기록이 저장)
현실적인 예시
- 은행 이체
- A 계좌에서 10만 원 출금 → B 계좌로 10만 원 입금
- 중간에 시스템이 꺼지거나 오류가 나도 둘 다 완료되거나, 아니면 아무 작업도 되지 않음.
- 온라인 쇼핑 결제
- 재고 확인 → 결제 처리 → 주문 기록 생성
- 이 과정 중 하나라도 실패하면 모든 작업이 취소.트랜잭션 사용여러 삭제 작업을 하나의 논리적 단위로 처리하려면 트랜잭션을 사용하세요.
728x90'🐬 MySQL > MySQL 함수' 카테고리의 다른 글
SQL에서 시간을 다루는 함수들: NOW(), CURDATE(), TIMEDIFF() 등 알아보기 (0) 2024.11.29 [함수] 숫자 함수 관련 - 아직 미숙 (정리예정) (0) 2024.11.29 SQL CONCAT() 활용법 : 데이터 조합의 핵심 도구 (1) 2024.11.27 SQL CHAR_LENGTH() 함수: 초보자도 쉽게 이해하는 문자열 길이 측정 (0) 2024.11.27 SQL REVERSE() : 문자열을 뒤집는 마법 (0) 2024.11.27