[SQL 공부] 메타코드 강의를 통한 SQL 스킬 학습(기타)

HJ·2024년 1월 9일
0
post-thumbnail

학습

저번 SQL 메타코드 포스팅에서 서론을 모두 설명했으니 이번에도 새로 학습한 내용 위주로 작성해 보려고 한다. 이번 포스팅에서는 SQL 쿼리에서 자주 사용하는 내용들을 정리해 보려고 한다. 저번 포스팅에 join , window등의 내용은 정리했으니 이번에는 기본적으로 자주 사용하는 쿼리에 대해 포스팅 하겠다.

LIMIT / OFFSET

LIMIT과 OFFSET은 주로 결과 집합의 특정 부분을 제한하거나 건너뛸 때 사용한다 . 특히 LIMIT는 반환되는 레코드의 수를 제한하는데 상위n개 , 하위n개등을 추출할때 정렬기능과 같이 자주 쓰인다.




두개를 동시에 활용하는 예시로 처음 5개 레코드를 건너뛰고 그 다음 3ㄴ개 레코드를 선택하려면 위와같이 LIMIT 10 OFFSET 5를 사용하면 된다.



또한 , 5번째 행부터(번호 6부터) 3개의 행을 출력하려면 다음과 같이 사용하면 된다.

문제

문제) employees 테이블에서 직원의 성(lastName)을 10개만 가져오되, 5번째부터 시작하세요.

select lastname
from employees
limit 4,10;

5번째라고 햇으니 limit 4(5번째부터) , 10개를 하면 된다.

문제 ) employees 테이블에서 employeeNumber를 별칭Employee_ID로 조회하되, 3번째부터 6개만 가져오세요.

select employeeNumber as Employee_ID
from employees
limit 2,6;

DISTINCT

Distinct를 사용하면 중복된 항 하나만 남기고 불러올 수 있다. 사용법은 간단하니 구조만 적겠다

select DISTIONCT column1 from table;

문제

문제) payments 테이블에서 체크 번호(checkNumber)의 중복 없는 값을 10개만 가져오세요.

Select DISTINCT checkNumber
From ayments
LIMIT 10;

LIKE

문자열에서 원하는 문자가 포함되어 있는지를 검색하고 %은 sql에서 0개이상 글자를 의미한다(공백도 포함). 즉 , where like %cars% 조건이면 cars를 포함하는 데이터를 필터이다.

문제

문제): employees 테이블에서 jobTitle에'Sales'라는 단어가 포함된 직원의 firstName와 lastName을

조회하세요.

SELECT firstName, lastName
FROM employees
WHERE jobTitle LIKE '%Sales%';

like %sales%를 사용하면 Sales라는 단어가 포함된 문자를 의미한다.

NOT IN / IS NULL / IS not NILL

NOT IN 은 특정 값이 포함되지 않은 데이터 조회 , IS NULL은 COLUMN 의 값이 NULL 인 데이터 조회 IS NOT NULL : COLUMN 의 값이 NULL 이 아닌 값을 조회한다.

위 두 코드는 모두 1,2,3이 아닌것을 조회하는 코드이다.


comments 값이 null인 데이터 , null이 아닌 데이터를 조회한다.

Group by / Having

group by 랑 Having은 MY SQL 의 핵심 기능이자 다양한 데이터를 분석하기위해 꼭 필요한 기능이다. 한 개 이상의 컬럼을 기준으로 결과를 그룹화하며 SUM(), AVG(), COUNT(), MAX(), MIN() 등의 집계 함수와 결합되어 사용된다.

예)Products 테이블에서 productLine 별 정보의 수

문제

문제)products 테이블에서 제품 라인(productLine)별 제품 개수를 조회하세요.

SELECT productLine, COUNT(productCode) AS ProductCount
FROM products
GROUP BY productLine;

문제) "orderdetails" 테이블에서 주문 번호("orderNumber")별로 총 주문 총액 ("priceEach" * "quantityOrdered") 상위 5개를 계산하세요.

SELECT orderNumber, SUM(priceEach * quantityOrdered) as totalOrderPrice 
FROM orderdetails 
GROUP BY orderNumber 
ORDER BY totalOrderPrice DESC
LIMIT 5;

orderNumber을 기준으로 그룹으로 묶고 totalOrderPrice을 계한 후 totalOrderPrice로 내림차순 정렬을해 5개를 뽑아내면 된다.

문제)"products" 테이블에서 productScale이 '1:10'인 제품 라인("productLine")별로 제품의 평균 가격("buyPrice")을 계산하세요.

SELECT productLine, AVG(buyPrice) as averagePrice 
FROM products 
WHERE productScale = '1:10'
GROUP BY productLine;

HAVING 절은 SQL의 GROUP BY 절과 함께 사용되며 그룹화된 결과에 조건을 적용하는 데 사용된다. WHERE 절은 개별 테이블에 대한 조건을 적용하는 반면, HAVING 절은 그룹화된 결과의 집계 값에 대한 조건을 적용한다.

예) Products 테이블에서 productLine 별 정보의 수가 20 이상인 productLine을 구하시오

문제

문제)'customers' 테이블에서 국가별 고객 수가 10명 이상인 국가를 조회하세요. (country와 customerNumber 컬럼 사용)

SELECT country, COUNT(customerNumber) AS TotalCustomers
FROM customers
GROUP BY country
HAVING TotalCustomers >= 10
;

country별로 고객수를 count하고 count값이 10명이상인 값을 조회하기위해 having을 사용해 조건을 건다.

후기

이번 포스팅은 sql에서 자주 사용하는 함수 및 문법들과 , 그와 관련된 문제들을 풀어보았다. 기초 개념인 만큼 난이도는 높지 않지만 SQL에서 매우 자주 쓰는 기능들이니 메타코드 강의를 통해 한번 더 복습했다. 이번에도 메타코드에 좋은 퀄리티 강의에 감사하고 SQL 공부를 하려는 사람이 있다면 추천한다.

메타코드 공식 사이트 : https://mcode.co.kr/

#메타코드 #메타코드M #SQL #데이터분석 #MYSQL #기초 #SQL공부 #데이터

profile
데이터 공부 기록

0개의 댓글

관련 채용 정보