전체 글 138

프로그래머스SQL_자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기

■ 사용 문법 GROUP BY ■ 사용 방법 1. start_date가 2016-10-16보다 작거나 같고(AND) end_date이 2016-10-16보다 같거나 큰 것을 필터링 해준다. 2. CAR_ID로 GROUP BY 한다. 3. 위 쿼리를 서브쿼리로 하여 SELECT 문에 넣어준다. 이 때 CASE 문을 사용하여 위 쿼리에 해당하는 것들은 '대여중' 그 이외의 것들은 '대여 가능'으로 하여 AVAILABLITY 칼럼을 만든다. 4. CAR_ID로 GROUP BY 한다.  ■ 코드 -- 코드를 입력하세요SELECT CAR_ID,( CASE WHEN CAR_ID IN (SELECT CAR_IDFROM CAR_RENTAL_COMPANY_RENTAL_HISTORYWHERE START_DATE = DAT..

개발/SQL 2024.05.16

필기 공부

1. TESTDOME에 있는 문제 기반으로 이론을 보충한다.운좋게 많이 맞추긴 했지만 헷갈리는 것을 정리해보려고 한다.  ■ CS 이론  1. HTTP Cookie 관련    - 웹 서버가 사용자의 브라우저에 정보를 저장할 수 있게 해주는 데이터 조각이다.    - 사용자가 웹 사이트에 방문할 때, 쿠키가 브라우저를 통해 서버에 저장될 수 있으며, 주로 사용자의 세션 관리, 개인 설정의 저장, 사용자의 행동의 추적 등에 사용된다.    - 쿠키는 장기적인 저장 매채로 사용하기에는 적절하지 않다. 그 이유는 저장 공간이 제한되어 있고, 만료 날짜가 설정되어 있다. 또한 보안 취약성이 있어 크로스 사이트 스크립트(XSS)의 공격 위험이 있다. 그리고 사용자에 의해 언제든지 쿠키가 삭제 되어 질 수 있다.  ..

개발/STUDY 2024.05.13

프로그래머스SQL_카테고리 별 도서 판매량 집계하기

■ 사용 문법 JOIN, GROUP BY, SUM ■ 사용 방법1. BOOK_ID를 기준으로 BOOK_SALES 과 BOOK을 Join 해준다.2. 2022년 1월로 필터로 걸러준다. 3. CATERGORY를 GROUP BY로 나누고, SALES를 SUM 해준다.  ■ 코드-- 코드를 입력하세요SELECT B.CATEGORY, SUM(SALES)FROM BOOK_SALES as AJOIN BOOK as BON A.BOOK_ID = B.BOOK_IDWHERE A.SALES_DATE BETWEEN DATE('2022-01-01') AND DATE('2022-01-31')GROUP BY B.CATEGORYORDER BY B.CATEGORY

개발/SQL 2024.05.13

프로그래머스SQL_즐겨찾기가 가장 많은 식당 정보 출력하기

■ 사용 문법 MAX, GROUP BY, JOIN ■ 사용 방법1. GROUP BY를 이용해 FOOD_TYPE 별 최대 FAVOTRITE 수를 구한다. 이 때, MAX를 사용하는데, 나머지 REST_ID와, REST_NAME의 값을 제대로 가져올 수 없다.2. 최대값과 FOOD_TYPE으로 REST_INFO와 조인해준다.  ■ 코드SELECT A.FOOD_TYPE, A.REST_ID, A.REST_NAME, A.FAVORITESFROM REST_INFO AS AJOIN ( SELECT FOOD_TYPE, MAX(FAVORITES) AS FAVORITES FROM REST_INFO GROUP BY FOOD_TYPE ) AS BON A.FAVORITES = B.FAVORITES AND ..

개발/SQL 2024.05.10

프로그래머스SQL_대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기

■ 사용 문법 GROUP BY, HAVING ■ 사용 방법1. 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차 ID 추출2. 추출한 자동차 ID로 2022년 8월부터 2022년 10월까지 월별 대여 횟수 계산 ■ 코드SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(CAR_ID) AS RECORDSFROM CAR_RENTAL_COMPANY_RENTAL_HISTORY AS AWHERE START_DATE >= DATE('2022-08-01') AND START_DATE = DATE('2022-08-01') AND START_DATE = 5 ORDER BY CAR_ID)GROUP BY CAR_ID, MONTH(START_DATE)ORD..

개발/SQL 2024.05.09

프로그래머스SQL_서울에 위치한 식당 목록 출력하기

■ 사용 문법 WITH RECURSIVE ■ 사용 방법WITH RECURSIVE를 이용해 세대 별로 분류해준다. 이후 PARENT_ID에 없는 ID를 분류해주고, GROUP BY로 세대 별로 나누어 줘서 갯수를 구하면 된다.  ■ 코드-- 코드를 작성해주세요WITH RECURSIVE GEN_DATA AS ( SELECT ID, PARENT_ID, 1 AS GEN FROM ECOLI_DATA WHERE PARENT_ID IS NULL UNION ALL SELECT A.ID, A.PARENT_ID, (GEN + 1) AS GEN FROM ECOLI_DATA AS A INNER JOIN GEN_DATA g ON A.PAREN..

개발/SQL 2024.05.07

프로그래머스SQL_부모의 형질을 모두 가지는 대장균 찾기

■ 사용 문법 비트 연산자(AND, OR) ■ 사용 방법비트 연산을 이용해 부모의 형질을 모두 보유한 대장균 ID를 구하는 문제이다. 부모 대장균의 형질과 자식 대장균의 형질의 OR 연산을 통해 자식 대장균 값이 나오면 출력하면 된다.  ■ 코드FROM(SELECT ID, PARENT_ID, A.GENOTYPE, (SELECT B.GENOTYPE FROM ECOLI_DATA AS B WHERE A.PARENT_ID = B.ID ) AS PARENT_GENOTYPE, (SELECT B.GENOTYPE | A.GENOTYPE FROM ECOLI_DATA AS B WHERE A.PARENT_ID = B.ID ) AS CALCUL_A,FROM ECOLI_DATA AS A ..

개발/SQL 2024.05.06

프로그래머스SQL_특정 세대의 대장균 찾기

■ 사용 문법 서브 쿼리, IS NULL ■ 사용 방법서브쿼리를 이용해 자식 ID를 찾아 3세대 까지 이동하였다. 다만, 내 방식에는 반복이 계속되었는데 3세대가 아니라 10세대를 구하라고 했다면 풀기 힘들 것이다. 찾아보니 WITH RECURSIVE 를 사용하여 재귀 문제를 풀 수 있었다.   ■ 코드-- 코드를 작성해주세요SELECT C.IDFROM ECOLI_DATA AS C, ( SELECT A.ID FROM ECOLI_DATA AS A, (SELECT ID FROM ECOLI_DATA WHERE PARENT_ID IS NULL) AS B WHERE A.PARENT_ID = B.ID ) AS DWHERE C.PA..

개발/SQL 2024.05.05