dev_beomgeun
꾸준하게 차근차근
dev_beomgeun
전체 방문자
오늘
어제
  • 분류 전체보기 (170)
    • 전공 (0)
      • 운영체제 (0)
      • 알고리즘 (0)
      • 자료구조 (0)
      • 데이터베이스 (0)
      • 네트워크 (0)
    • 개발 공부 (32)
      • 웹 (6)
      • 리눅스 (4)
      • 머신러닝 (1)
      • 스프링 (17)
      • Git (2)
      • AWS (2)
    • 개발 도서, 강의 (3)
      • 스프링 입문을 위한 자바 객체지향의 원리와 이해 (0)
      • 모든 개발자를 위한 HTTP 웹 기본 지식(김영한.. (2)
      • 스프링 부트와 AWS로 혼자 구현하는 웹서비스 (1)
    • 문제 풀이 (118)
      • 백준 알고리즘 (72)
      • 프로그래머스 알고리즘, SQL (38)
      • Hackerrank SQL (8)
    • 프로젝트 기록 (4)
      • 캡스톤 종합설계 (4)
      • 반려하루 프로젝트 (0)
    • 활동 기록 (12)
      • 네이버 부스트캠프 (7)
      • 취준 & 코테 (4)
      • 소프트웨어 마에스트로 13기 (1)
    • 이것저것 (1)

블로그 메뉴

  • 홈
  • 깃허브
  • 링크드인
  • 방명록

공지사항

인기 글

태그

  • 서블릿
  • 그래프탐색
  • 프로그래머스
  • 반성
  • Hackerrank
  • dp
  • 일기
  • 회고
  • 스프링
  • 프로그래머스 SQL
  • HackerRank mysql
  • 백준
  • c++
  • Baekjoon
  • BFS
  • 네이버 부스트캠프
  • AI Tech
  • 부스트캠프
  • 기록
  • 백준 DP

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
dev_beomgeun

꾸준하게 차근차근

문제 풀이/프로그래머스 알고리즘, SQL

[프로그래머스] SQL 문제 정리

2021. 1. 20. 17:26
728x90

MySQL version

 

SELECT

 - 기본 조회 : SELECT * FROM TABLE_NAME : 테이블에서 모든 레코드 조회

 - 정렬 : SELECT COLUMN_NAME FROM TABLE_NAME ORDER BY COLUMN_NAME ASC : 순서대로 정렬 (생략 가능)

 - 역순 정렬 : SELECT COLUMN_NAME FROM TABLE_NAME ORDER BY COLUMN_NAME DESC : 역순으로 정렬

 - 조건 여러 개 정렬 : SELECT COLUMN_NAME FROM TABLE_NAME ORDER BY COLUMN_NAME1 ASC COLUMN_NAME2 DESC : COL1으로 정렬 후 같을 시 NAME2로 역순 정렬

 - 조건부 조회 : SELECT COLUMN_NAME FROM TABLE_NAME WHERE COLUMN_NAME =,!= '조건' ORDER BY ~~

 - 상위 n개 조회 : SELECT COLUMN_NAME FROM TABLE_NAME ORDER BY ~~ LIMIT n

 - 중복제거 : SELECT DISTINCT COLUMN_NAME FROM TABLE_NAME

 

WHERE 조건 ( 작은따옴표 사용하기)

 - 비교 : WHERE COLUMN_NAME < 20000 또는 COLUMN_NAME > 10000 AND COLUMN_NAME <= 20000

 - 범위 : WHERE COLUMN_NAME BETWEEN 10000 AND 20000 (위와 동일한 조건)

 - 집합 : WHERE COLUMN_NAME IN ('A', 'B')

 - 패턴 : WHERE NAME LIKE '~~~' 또는 '%축구%' ( 축구란 단어가 들어간 모두) 또는 '_구%' (두 번째 위치에 구가 해당)

 - NULL : WHERE COLUMN_NAME IS NULL 또는 IS NOT NULL

 - 복합 조건 : WHERE (COLUMN_NAME < 20000) AND (NAME LIKE '~~~')

 

집계 함수(MAX, MIN, SUM, AVG, COUNT)

 - 최댓값 : SELECT MAX(COLUMN_NAME) AS 원하는 이름 FROM TABLE_NAME

 - 최솟값 : SELECT MIN(COLUMN_NAME) AS 원하는 이름 FROM TABLE_NAME

 - 개수 : SELECT COUNT(COLUMN_NAME) AS 원하는 이름 FROM TABLE_NAME

 - 평균 : SELECT AVG(COLUMN_NAME) AS 원하는 이름 FROM TABLE_NAME

 - 총합 : SELECT SUM(COLUMN_NAME) AS 원하는 이름 FROM TABLE_NAME 

 - NULL과 중복 제거한 개수 : SELECT COUNT(DISTINCT NAME) FROM TABLE WHERE NAME IS NOT NULL

 

GROUP BY - 속성 값이 같은 값끼리 그룹을 만들 수 있다.

예를 들어 GROUP BY custid일시 custid가 같은 값끼리 그룹을 묶는다.(1 끼리, 2 끼리, 3 끼리...)

 

ex) 고객별로 주문한 도서의 총수량과 총판매액을 구하시오.

SELECT custid, COUNT(*) AS 도서수량, SUM(saleprice) AS 총액

FROM Orders

GROUP BY custid;

 

HAVING - GROUP BY의 결과에 조건을 걸어주는 역할을 한다.

ex) 가격이 8천원 이상인 도서를 구매한 고객에 대하여 고객별 주문 도서의 총수량을 구하시오. 단, 두 권 이상 구매한 고객만 구하시오.

SELECT custid, COUNT(*) AS 도서수량

FROM Orders

WHERE saleprice >= 8000

GROUP BY custid

HAVING COUNT(*) >= 2

 

DATETIME에서 속성 추출

- HOUR(DATETIME COLUMN NAME) : TYPE이 DATETIME인 데이터에서 시간만 추출할 수 있다.

- MINUTE : 분 정보 추출

- SECOND : 초 정보 추출

 

ex)  09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.

 

SELECT HOUR(DATETIME) HOUR, count(*) as COUNT
FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
HAVING HOUR >= 9 AND HOUR <= 19
ORDER BY HOUR(DATETIME)

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'문제 풀이 > 프로그래머스 알고리즘, SQL' 카테고리의 다른 글

[프로그래머스 SQL] 있었는데요, 없었습니다 (join)  (0) 2021.02.23
[프로그래머스 SQL] NULL 처리하기  (0) 2021.02.23
[프로그래머스] 3진법 뒤집기 (n진법, bitset) [C++]  (0) 2021.01.03
[프로그래머스] 문자열 내 마음대로 정렬하기(문자열) [C++]  (0) 2020.12.28
[프로그래머스] 완주하지 못한 선수(map) [C++]  (0) 2020.12.23
    '문제 풀이/프로그래머스 알고리즘, SQL' 카테고리의 다른 글
    • [프로그래머스 SQL] 있었는데요, 없었습니다 (join)
    • [프로그래머스 SQL] NULL 처리하기
    • [프로그래머스] 3진법 뒤집기 (n진법, bitset) [C++]
    • [프로그래머스] 문자열 내 마음대로 정렬하기(문자열) [C++]
    dev_beomgeun
    dev_beomgeun
    백엔드 개발을 하며 얻은 지식과 경험을 공유합니다. 현재 카카오페이에서 백엔드 엔지니어로 일하고 있습니다.

    티스토리툴바