728x90

프로그래머스 8

[프로그래머스] 조건에 맞는 사용자 정보 조회하기 - ORACLE

GROUP BY,HAVING만 잘 써서 서브쿼리(인라인 뷰 방식)을 만든다면 어렵지않게 풀 수 있는 문제입니다. --oracle SELECT A.USER_ID,A.NICKNAME,B.PRICE AS TOTAL_SALES FROM USED_GOODS_USER A, (SELECT WRITER_ID,SUM(PRICE) AS PRICE FROM USED_GOODS_BOARD GROUP BY WRITER_ID,STATUS HAVING STATUS = 'DONE' AND SUM(PRICE) >= 700000) B WHERE A.USER_ID = B.WRITER_ID ORDER BY TOTAL_SALES

[프로그래머스] 조건에 맞는 사용자와 총 거래금액 조회하기 - ORACLE

이번 문제는 '테이블에서 중고 거래 게시물을 3건 이상 등록한 사용자의 사용자 ID' 이 문장이 중요했고 나머지는 문자열 합치는 거라 그렇게 어렵진않을 것 같네요. 앞서 말한 문장을 아래처럼 Group by, having으로 표현할 수 있다면 조인을 걸거나 USER_ID의 조건으로 IN을 걸어서 풀 수 있어요. SELECT WRITER_ID FROM USED_GOODS_BOARD GROUP BY WRITER_ID HAVING COUNT(*) >= 3 SUBSTR로 문자열 나누고 ||이나 concat 사용해서 문자열 결합하는 건 그리 어렵지않으니 쉽게 해결할 수 있는 문제네요. -- oracle SELECT A.USER_ID,A.NICKNAME,A.CITY || ' ' || STREET_ADDRESS1 |..

[프로그래머스] 최소직사각형 - 완전탐색, 자바

sizes의 길이는 1 이상 10,000 이하이고 가로,세로는 1 이상 1,000 이하인 자연수이다. 단순하게 긴 걸 가로 길이로, 짧은 걸 세로 길이로 둔다는 생각으로 접근했는데 보통 명함이나 문서 정리할때 긴쪽으로 가로로 두고 탁탁치면서 정리하는 느낌으로 생각하면 될 듯하다. class Solution { public int solution(int[][] sizes) { int maxWidth = 0,maxHeight = 0; for(int[] size : sizes){ if(size[0] > size[1]){ if(maxWidth < size[0]) maxWidth = size[0]; if(maxHeight < size[1]) maxHeight = size[1]; }else{ if(maxWidth ..

코딩테스트 2023.02.18

[프로그래머스] 조건에 맞는 도서와 저자 리스트 출력하기

간단한 JOIN 문제이다. JOIN문제는 차근차근 출력해보면서 푸는 걸 추천한다. 그리고 프로그래머스에서는 매번 DATE 타입의 포맷을 지정해주기 때문에 TO_CHAR로 변환하는 방법은 당연히 알고있어야한다. --오라클 SELECT A.BOOK_ID,B.AUTHOR_NAME, TO_CHAR(A.PUBLISHED_DATE,'YYYY-MM-DD') AS PUBLISHED_DATE FROM BOOK A, AUTHOR B WHERE A.AUTHOR_ID = B.AUTHOR_ID AND A.CATEGORY = '경제' ORDER BY A.PUBLISHED_DATE

[프로그래머스] 가격대 별 상품 개수 구하기

가격대별로 상품 개수를 구하는데 여기서 핵심은 n만원대를 어떻게 나눌 것인가이다. TRUNC(PRICE/10000,0)으로 몇 만원인지 구하고 다시 10,000을 곱하는 방법으로 풀어줬는데 CASE WHEN이나 SUBSTR을 사용하는 방법도 있으나 10만원 이하라는 보장이 없기 때문에 아래와 같이 풀어주는 것이 제일 정확한 방법이지 않을까싶다. --오라클 코드 SELECT TRUNC(PRICE/10000,0)*10000 AS PRICE_GROUP, COUNT(PRODUCT_ID) AS PRODUCTS FROM PRODUCT GROUP BY TRUNC(PRICE/10000,0)*10000 ORDER BY PRICE_GROUP

프로그래머스 - SQL 고득점 Kit

백신 맞고 심심해서 풀다보니 고득점 키트를 다 풀어버렸다. 문제는 다 Oracle로 풀었다는 점..? 정답이긴 해도 효율 생각안하고 직관적으로 풀어버려서 맘에 안들긴하는데 지금 노트북에는 오라클을 안깔아둬서 어쩔 수 없다. 저 중에서 어느정도 난이도 있는 문제와 개인적인 코드 리뷰를 적어볼까한다. 1. GROUP BY - 입양 시간 구하기(1) 데이터가 많은 경우 TO_CHAR, TO_DATE같은 함수로 데이터 내용 일부를 추출하거나 변환할 때 시간이 많이 걸려서 그 횟수를 줄이고자 아래와 같이 짰고 BETWEEN AND 를 안 쓴 이유는 포함여부가 헷갈리는 것을 막기 위함이다. --입양 시각 구하기(1) SELECT HOUR,COUNT(HOUR) AS COUNT FROM ( SELECT TO_CHAR(..

취준일지/SQLD 2021.10.28
728x90
반응형