프로그래머스/쿼리
-
[oracle] GROUP BY - 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기프로그래머스/쿼리 2025. 3. 25. 17:49
SELECT A.EMP_NO, A.EMP_NAME, B.GRADE, A.SAL * B.AVG AS BONUSFROM HR_EMPLOYEES AJOIN ( SELECT EMP_NO, CASE WHEN AVG(SCORE) >= 96 THEN 0.2 WHEN AVG(SCORE) >= 90 THEN 0.15 WHEN AVG(SCORE) >= 80 THEN 0.1 ELSE 0 END AS "AVG", CASE WHEN AVG(SCORE) >= 96 THEN 'S' WHEN AVG(SCORE) >= 90 THEN 'A' WH..
-
[oracle] GROUP BY - 년, 월, 성별 별 상품 구매 회원 수 구하기프로그래머스/쿼리 2025. 3. 24. 22:52
SELECT EXTRACT(YEAR FROM A.SALES_DATE) AS YEAR, EXTRACT(MONTH FROM A.SALES_DATE) AS MONTH, B.GENDER, COUNT(DISTINCT A.USER_ID) AS USERSFROM ONLINE_SALE AJOIN USER_INFO BON A.USER_ID = B.USER_IDWHERE B.GENDER IS NOT NULLGROUP BY EXTRACT(YEAR FROM A.SALES_DATE), EXTRACT(MONTH FROM A.SALES_DATE), B.GENDERORDER BY EXTRACT(YEAR FROM A.SALES_DATE), EXTRACT..
-
[oracle] JOIN - 5월 식품들의 총매출 조회하기프로그래머스/쿼리 2025. 3. 24. 17:35
SELECT A.PRODUCT_ID, A.PRODUCT_NAME, SUM(B.AMOUNT * A.PRICE) AS TOTAL_SALES FROM FOOD_PRODUCT AJOIN FOOD_ORDER BON A.PRODUCT_ID = B.PRODUCT_IDWHERE TO_CHAR(B.PRODUCE_DATE, 'YYYY-MM') = '2022-05'GROUP BY A.PRODUCT_ID, A.PRODUCT_NAMEORDER BY TOTAL_SALES DESC, A.PRODUCT_ID; 조인 후 집계함수 사용해서 구하면 됨
-
[oracle] String, Date - 오랜 기간 보호한 동물(2)프로그래머스/쿼리 2025. 3. 23. 14:36
SELECT * FROM ( SELECT A.ANIMAL_ID, A.NAME FROM ANIMAL_INS A, ANIMAL_OUTS B WHERE A.ANIMAL_ID = B.ANIMAL_ID ORDER BY (B.DATETIME - A.DATETIME) DESC)WHERE ROWNUM 보호기간 정렬을 아래와 같이 표시하고, ORDER BY (B.DATETIME - A.DATETIME) DESC 2개만 표시하라고 했으므로 WHERE ROWNUM
-
[mysql] SELECT - 특정 세대의 대장균 찾기프로그래머스/쿼리 2025. 3. 19. 12:59
재귀 이용WITH RECURSIVE EcoliHierarchy AS ( -- 1세대 대장균: PARENT_ID가 NULL인 개체 SELECT ID, PARENT_ID, 1 AS generation FROM ECOLI_DATA WHERE PARENT_ID IS NULL UNION ALL -- 2세대 대장균: 부모가 1세대인 개체 SELECT e.ID, e.PARENT_ID, eh.generation + 1 FROM ECOLI_DATA e JOIN EcoliHierarchy eh ON e.PARENT_ID = eh.ID WHERE eh.generation = 1 UNION ALL -- 3세대 대장균: 부모가 2세대인..
-
[mysql] SELECT - 대장균의 크기에 따라 분류하기 2프로그래머스/쿼리 2025. 3. 19. 11:51
SELECT A.ID, CASE WHEN A.R > A.MAX_ID * 0.75 THEN 'CRITICAL' WHEN A.R > A.MAX_ID* 0.5 THEN 'HIGH' WHEN A.R > A.MAX_ID * 0.25 THEN 'MEDIUM' ELSE 'LOW' END AS COLONY_NAME FROM (SELECT ID # 순위 , ROW_NUMBER() OVER (ORDER BY SIZE_OF_COLONY) AS R # 총 데이터의 수 , MAX(ID) OVER() AS MAX_ID FROM ECOLI_DATA) AORDER BY ID 설명하자면 , ROW_NUMBER() OVER (ORDER BY SIZE_OF_COLONY) A..