반응형

PROJECTION : 컬럼명을 지정해서 데이터를 가져오는 쿼리문

SELECT NAME FROM TABLE
	ORDER BY SAL LIMIT 1

위 코드의 경우는 테이블에서 NAME컬럼만 출력한다. 근데 출력할 때는 SAL(연봉)을 기준으로 해서 가장 제일 위에 뜨는거 하나만 출력하는 형태이다.

 

SELECTION : 전체 혹은 원하는 컬럼만을 가져오는 것

* 표시나 WHERE과 같다

 

SELECT관련된 문제를 하나 풀이 해보았다.

https://school.programmers.co.kr/learn/courses/30/lessons/131535

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

해당 문제는 주어진 테이블에서 2021년에 가입한 회원 중, 나이가 20~29 사이인 회원의 수를 카운팅하는 것이다.

SELECT COUNT(AGE) AS USERS FROM USER_INFO
    WHERE year(JOINED) = '2021' AND AGE>=20 AND AGE<=29

조건은 2가지를 줬다. 2021년에 가입했으며 20대인 회원이다. 따라서 WHERE절을 사용했다.

SQL에서 쿼리의 실행순서는

FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY -> LIMIT 이다.

즉, 이 순서대로 해석하자면  USER_INFO라는 테이블에서(FROM)  가입연도가 2021년이고, 나이는 20~29살 사이 (WHERE) 인 회원들 출력하는데 USERS라는 별칭으로 출력해라 (SELECT) 라는 것이다.

 

COUNT(칼럼명)은  해당 칼럼의 데이터 수를 세라는 것이고, 뒤에 AS는 기존 칼럼명에서 다른 칼럼명으로 바꾼다는 의미다. 따라서 AGE -> USERS로 바꾼 것이다.

 

문제를 하나 더 풀자면

https://school.programmers.co.kr/learn/courses/30/lessons/144853

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE,'%Y-%m-%d') AS PUBLISHED_DATE FROM BOOK
    WHERE year(PUBLISHED_DATE) = '2021' and CATEGORY = '인문'
    ORDER BY PUBLISHED_DATE

문제는 BOOK이라는 테이블에서  조건 1) 2021년에 출판된  조건 2) 인문 카테고리에 속하는 도서 리스트를 찾아서

도서ID와 출판일로 출력하라는 SQL문을 작성해달라고 한다. 결과는 출판일 기준으로 오름차순 정렬이다.

 

살짝 까다로울 수도 있는데 아직 어려운 수준은 아니다.

조건들은 WHERE에 넣어주면 되는데 DATE_FORMAT이란게 있다. 기본적으로  날짜함수는

Y,M,D뿐만 아니라 뒤에 시-분-초까지도 다 나온다. 근데 문제에서 요구하는건 시,분,초는 생략하는 것이므로

DATE_FORMAT이라는 함수를 사용했다. 이를 사용하는 방법은 위와 같다.

 

별칭은 잊지말자.

https://school.programmers.co.kr/learn/courses/30/lessons/133024

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

SELECT FLAVOR FROM FIRST_HALF
    ORDER BY TOTAL_ORDER DESC , SHIPMENT_ID ASC

SELECT문의 마지막 문제로 가져왔다.

이 문제는 TOTAL_ORDER를 내림차순으로 하되, 같은 값을 가질 땐 SHIPMENT_ID를 기준으로 오름차순시키라는 문제다. 다른 언어와 달리 따로 조건문을 쓸 필요없이 위 코드처럼 짜놓으면 된다.

반응형

+ Recent posts