SELECT- 12세 이하인 여자 환자목록 출력하기
https://school.programmers.co.kr/learn/courses/30/lessons/132201
SELECT PT_NAME,PT_NO,GEND_CD,AGE,ifnull(TLNO,"NONE") as TLNO FROM PATIENT WHERE (AGE<=12) and (GEND_CD='W') ORDER BY AGE DESC ,PT_NAME
order by는 SELECT 문에서 논리적으로 맨 마지막에 수행.
ifnull: 해당 컬럼값이 NULL을 반환할 때, 다른 값으로 출력할 수 있도록 하는 함수
SELECT IFNULL(NAME,"example none") as NAME
SELECT- 재구매가 일어난 상품과 회원 리스트 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/131536
SELECT USER_ID, PRODUCT_ID FROM ONLINE_SALE
GROUP BY USER_ID,PRODUCT_ID
HAVING COUNT(*)>1
ORDER BY USER_ID, PRODUCT_ID DESC
- GROUP BY의 기준에 속성을 여러 개 줄 수 있다.
- HAVING을 이용해 GROUP BY 집계 결과에 조건을 줄 수 있다
- 집계함수 COUNT로 컬럼의 갯수를 산출한다.
SELECT- 조건에 맞는 회원수 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/131535
SELECT COUNT(*)as USERS FROM USER_INFO
WHERE YEAR(JOINED) ="2021" and 20<=AGE and AGE<=29
- YEAR, MONTH, DAY를 이용해 날짜 추출 가능
- 20<= AGE <=29 처럼 작성해서는 안된다.
SELECT- 오프라인/온라인 판매 데이터 통합하기
https://school.programmers.co.kr/learn/courses/30/lessons/131537
SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE SALES_DATE LIKE '2022-03%'
UNION ALL
SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
WHERE SALES_DATE LIKE '2022-03%'
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID
- LIKE 연산자: 문자열의 패턴을 검색하는 데 사용
- %는 모든 문자, _ 는 한 글자를 의미
- '%스파게티%' => 스파게티가 들어간 모든 문자 출력
-UNION: 두 개 이상의 SELECT 문의 결과 집합을 결합
- UNION ALL: 중복 데이터 출력
- JOIN과 달리 두 개의 SQL 문에서 만들어진 필드가 동일한 데이터 유형에 사용되어야 한다.
[SQL문1]
UNION
[SQL문2];
String, Date - 자동차 대여 기록에서 장기/단기 대여 구분하기
https://school.programmers.co.kr/learn/courses/30/lessons/151138
SELECT HISTORY_ID, CAR_ID, DATE_FORMAT(START_DATE,'%Y-%m-%d') as START_DATE,
DATE_FORMAT(END_DATE,'%Y-%m-%d') as END_DATE,
IF(DATEDIFF(END_DATE, START_DATE) >= 29, '장기 대여', '단기 대여') AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE date_format(START_DATE,'%Y-%m') LIKE '2022-09'
ORDER BY HISTORY_ID DESC
- Date_format(날짜컬럼, 형식)
- DATEDIFF( 'END-DATE','START_DATE')
- IF(조건문, 참일 때의 값, 거짓일 때의 값) AS result
String,Date- 조건에 부합하는 중고거래 상태 조회하기
.https://school.programmers.co.kr/learn/courses/30/lessons/164672
SELECT BOARD_ID,WRITER_ID, TITLE, PRICE,
CASE
WHEN STATUS LIKE 'SALE' THEN '판매중'
WHEN STATUS LIKE 'RESERVED' THEN '예약중'
WHEN STATUS LIKE 'DONE' THEN '거래완료'
END AS STATUS
FROM USED_GOODS_BOARD
WHERE DATE_FORMAT(CREATED_DATE,'%Y-%m-%d') LIKE '2022-10-05'
ORDER BY BOARD_ID DESC
String, Date- 자동차 평균 대여기간 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/157342
SELECT CAR_ID,
ROUND(AVG(DATEDIFF(END_DATE,START_DATE)+1),1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
HAVING AVERAGE_DURATION>=7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC
- SELECT 문의 논리적 수행 순서가 FROM -> WHERE-> GROUP BY-> HAVING -> SELECT -> GROUP BY이니까 가능
String, DATE- 대여 기록이 존재하는 자동차 리스트 구하기
.
https://school.programmers.co.kr/learn/courses/30/lessons/157341
1. 자동차 종류가 '세단' 인 자동차 ID
2. 10월에 대여를 시작한 자동차 ID => WHERE절로 DATE 걸러주기
=> 두 테이블을 자동차 ID로 연결 => JOIN연산 사용
3. 자동차 ID 중복이 없어야 한다.=> SELECT DISTINCT
4. 자동차 ID 내림차순 정렬
SELECT DISTINCT CAR.CAR_ID FROM CAR_RENTAL_COMPANY_CAR as CAR INNER JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY as RENTAL
on CAR.CAR_ID =RENTAL.CAR_ID
WHERE CAR.CAR_TYPE LIKE "세단" and MONTH(RENTAL.START_DATE)=10
ORDER BY CAR.CAR_ID DESC
조인연산
SELECT <열 목록>
FROM <기준 테이블>
INNER JOIN<참조할 테이블>
ON <조인 조건>
[WHERE 검색조건]
'TIL' 카테고리의 다른 글
리액트 다루는 기술 1주차 스터디 정리 (0) | 2024.01.16 |
---|---|
[기업플젝 기록] 리액트 - useContext로 모달 관리하기 (0) | 2023.12.14 |
[TIL] 12/5 - 리액트, 기업 프로젝트 기록 (1) | 2023.12.05 |
11/8 next.js 프로젝트 진행 - radix progress bar (0) | 2023.11.08 |