SQL 공부 | 상관서브쿼리
·
SQL
📖 상관서브쿼리란?서브쿼리가 그냥 하나의 테이블, 칼럼, 값을 의미하는 게 아니라 외부에서 한 행씩 보내서 두번째 행이 또 서브쿼리로 보내져서 두번재 행이 동작하고 이 사이클을 계속 도는 것.그래서 외부 쿼리가 상관이 있는 서브쿼리라는 의미로 상관쿼리라고 부름  📖 상관서브쿼리 예시 customers 테이블customer_id customer_name registration_date101Alice2023-01-01102Bob2023-02-01103Charlie2023-03-01104David2023-04-01 -- 상관 서브쿼리의 예SELECT customer_id, (SELECT COUNT(*) FROM orders WHERE orders.customer_i..
SQL 공부 | 피봇테이블 만들기, 윈도우함수, RAND
·
SQL
1. 피봇테이블 📖 SQL로 피봇테이블 만들기피봇테이블(Pivot Table) : 2개 이상의 기준으로 데이터를 집계할 때 보기 쉽게 배열해 보여주는 것MAX를 꼭 적어야 함. 피봇할 땐 MAX(IF()) 그냥 외울 것.마지막에 GROUP BY 첫번째 칼럼도 반드시 해야 함. 왜냐하면 MAX가 집계함수니까. 📖 예시 문제음식 타입별, 연령별 주문건수 pivot view 만들기 단, 결과물 예시가 아래와 같이 나와야 함  📖 문제 풀이-- 2. 피봇테이블로 음식타입과 각 연령이 나오는 테이블 만들기SELECT cuisine_type, max(if(연령='10대',주문수량,0)) 10대, max(if(연령='20대',주문수량,0)) 20대, max(if(연령='30대',주문수량,0)) 30대, max(..
SQL 공부 | JOIN 함수
·
SQL
📖 JOININNERJOIN : 두 테이블에서 공통되는 것만 출력LEFTJOIN : 기준 테이블은 왼쪽에 전부를 출력하고, 가져오는 테이블은 그 옆에 붙이므로 NULL값 생길 수 있음ON : JOIN 실행 조건, 어느 컬럼을 기준으로 합칠건지DISTINCT : 중복값 제거 ✔ left join의 특징1. left table에서 중복이 있을 수 있다2. right table에서 null이 있을 수 있다  📖 예시 문제 1한국 음식의 주문별 결제 수단과 수수료율을 조회하기 *조회 컬럼 : 주문 번호order_id, 식당 이름restaurant_name, 주문 가격price, 결제 수단pay_type, 수수료율vat*단, 결제 정보가 없는 경우도 포함하여 조회select a.order_id, a..
TIL #9. SQL 날짜, 시간, 랜덤 추출
·
SQL
SQL 공부[MySQL] 날짜 형식 변경 : DATE_FORMATSELECT DATE_FORMAT ('2024-11-28 09:45', '%Y년 %m월 %d일')  >>  2024년 11월 28일SELECT DATE_FORMAT(DATETIME, '%Y-%m-%d') AS 날짜FROM table참고) [MySQL] DATE_FORMAT: 날짜/시간 표기 방식 지정하기본 포스팅에서는 MySQL 내 date_format 구문을 활용하여 날짜 혹은 시간 표기 방식을 지정하는 방법을 알아봅니다. 목차 1. date_format 표기법 2. 날짜만 출력하기 2.1. 'yyyy-mm-dd' 형태로 출력하기 2.2. 'yy-mmheytech.tistory.com 시간 더하기 : DATE_ADDDATE_ADD(..
TIL #8. 개미는 뚠뚠🐜 오늘도 뚠뚠🐜 SQL 공부하네
·
SQL
SQL 공부IFNULL - SELECT 문에서 NULL 값 대체/치환SELECT IFNULL(Column명, "Null일 경우 대체 값")FROM 테이블명; CASE WHEN~ THEN~ ELSE~ END 조건문SELECTCASE WHEN(조건A) THEN A WHEN(조건B) THEN B ELSE CEND AS 원하는 칼럼명FROM TABLE ; RANK, DENSE_RANK 순위함수RANK() OVER(ORDER BY )SELECTRANK() OVER ( [PARTITION BY partition_expression, ... ] ORDER BY sort_expression [ASC | DESC], ...)FROM TABLErank()나 dense_rank()를 사용할 땐 순위를..
TIL #7. SQL 기초 공부
·
SQL
오늘은 SQL 코드카타 10개를 풀었다. SQL 공부count (컬럼명) : Null값을 제외하고 countcount(*) : Null값을 포함하여 countcount(distinct(칼럼명)) : 중복값, Null 제외하고 count *중복된 개수 N개 이상인 컬럼 조회하기 : COUNT, HAVING (GROUP BY) 필요ex. 코드카타 연습 https://school.programmers.co.kr/learn/courses/30/lessons/59041SELECT NAME, COUNT(NAME) AS COUNTFROM ANIMAL_INSGROUP BY NAMEHAVING COUNT >=2ORDER BY NAME; *컬럼A에서 최댓값(최솟값)인 컬럼B를 조회할 때 : 서브쿼리 이용!ex. 코드..
TIL #6. SQL 기초 공부
·
SQL
SQL 공부week 3 개념 정리, 오답 노트 * LIKE 대신 =을 쓰면 정확하게 같은 값을 찾음 WHERE addr LIKE'%서울%'  -- 처음에 LIKE로 풀었는데SELECT cuisine_type, AVG(price)FROM food_ordersWHERE addr LIKE'%서울%'GROUP BY cuisine_type;-- SUBSTR 써서 이렇게 풀어도 됨SELECT cuisine_type, AVG(price)FROM food_ordersWHERE SUBSTR(addr, 1, 2) = '서울'GROUP BY cuisine_type;> 코드 결과 *AVG함수는 SELECT문에 쓸 수 있고, MAX(AVG)함수는 쓸 수 없음-> 이 경우 윈도우 함수 사용.  어휴 고생했다