반응형

SQL 63

[프로그래머스] 조건에 맞는 회원수 구하기 (Mysql)

https://school.programmers.co.kr/learn/courses/30/lessons/131535 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스코드 풀이 ★ 가입한 날짜의 년도가 2021년이며, 나이가 20세 이상, 29세 이하인 값들만 추출해줍니다. ★ 그 후 추출된 값들의 개수를 SELECT절에서 집계함수인 COUNT()로 구하여 출력합니다 !

[프로그래머스] DATETIME에서 DATE로 형 변환 (Mysql)

https://school.programmers.co.kr/learn/courses/30/lessons/59414 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스코드 풀이 ★ 날짜를 년-월-일로만 출력하거나 또 다른 형태로 출력해주기 위해서는 DATE_FORMAT() 함수를 사용합니다. 결과값을 년-월-일로 출력해야 하기 때문에 DATE_FORMAT(칼럼명, '%Y-%m-%d)를 입력하였습니다 ! ★ 참고로 날짜 형식에 '월'과 '일'을 M, D와 같이 대문자로 쓰게 된다면, EX) 3월 => March, 2일 => 2nd로 출력 됩니다 !

[프로그래머스] 취소되지 않은 진료 예약 조회하기 (Mysql)

https://school.programmers.co.kr/learn/courses/30/lessons/132204 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스코드 풀이 ★ 기존 문제들과의 다른 점이 있다면 테이블을 합치는 과정에서 APPOINTMENT 테이블을 기준으로 PATIENT 테이블과 DOCTOR 테이블을 합쳐야 한다는 것입니다. ★ 또한 DOCTOR 테이블을 합치는 과정에서 ON의 조건으로 MCDP_CD(진료과 코드)를 주는 것이 아니라 의사 ID를 줘야 합니다. ★ 그 이후엔 WHERE절에서 문제에서 주어진 조건들을 명시해주시면 됩니다 !

[프로그래머스] 조건별로 분류하여 주문상태 출력하기 (Mysql)

https://school.programmers.co.kr/learn/courses/30/lessons/131113 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스코드 풀이 ★ CASE WHEN 구문을 사용하여 출고날짜가 '5월 2일보다 빠를 때, 느릴 때, 출고날짜가 NULL 값일 때' 세가지 조건으로 나눠주어 출고여부 칼럼의 데이터를 출력하였습니다. ★ 위와 같은 과정을 거칠 때, DATE_FORMAT 구문으로 출고날짜을 포맷팅할 때 05-02라는 날짜를 문자열이 아닌 숫자형으로 쓰면 출력 값이 제대로 나오지 않습니다. 그렇기 때문에 꼭 문자열 형..

[프로그래머스] 카테고리 별 상품 개수 구하기 (Mysql)

https://school.programmers.co.kr/learn/courses/30/lessons/131529 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스코드 풀이 ★ SUBSTRING() 함수를 사용해 PRODUCT_CODE의 첫번째 문자부터 2개의 문자를 골라 추출해줍니다. ★ CATEGORY별로 그룹핑을 해준뒤, 카테고리별로 상품이 몇개 있는지 SELECT문에서 집계함수인 COUNT() 함수를 사용하여 구해줍니다 ! ★ SUBSTRING 참고 https://hyul-mode.tistory.com/entry/%ED%94%84%EB%A1%9..

[프로그래머스] 저자 별 카테고리 별 매출액 집계하기 (Mysql)

https://school.programmers.co.kr/learn/courses/30/lessons/144856 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스코드 풀이 ★ GROUP BY절에 두개의 칼럼을 사용하여 문제를 풀어줘야 합니다. 기존에는 GROUP BY에 한가지 칼럼만 사용하여 데이터를 그룹핑 했다면 이러한 부분을 공부하지 않았을 시 문제 해결에 어려움이 있겠지만 지문에서 저자별, 카테고리별 정렬을 하라고 했기에 지문만 잘 읽어도 해결할 수 있는 문제였습니다 ! ★ GROUP BY에 두개의 칼럼을 쓰게 되면 두가지 칼럼으로 그룹핑을 진..

[프로그래머스] 자동차 대여 기록에서 장기/단기 대여 구분하기 (Mysql)

https://school.programmers.co.kr/learn/courses/30/lessons/151138 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스코드 풀이 ★ WHERE절에서 시작 월이 9월인 데이터만 추출한 뒤 GROUP BY절에서 대여 기록 ID를 기준으로 그룹핑을 해줍니다. ★ 예시 결과값의 데이트 포맷과 동일하게 만들어주기 위하여 DATE_FORMAT() 함수를 사용하여 양식을 맞춰줍니다. ★ 그 후 CASE WHEN문 안에서 DATEDIFF 함수를 사용하여 대여 기간이 30일 이상이면 장기 대여, 아니면 단기 대여를 출력해 ..

[프로그래머스] 가격이 제일 비싼 식품의 정보 출력하기 (Mysql)

https://school.programmers.co.kr/learn/courses/30/lessons/131115 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스코드 SELECT문에서 MAX 사용시, => 오답 서브쿼리로 MAX 사용시, => 정답 풀이 ★ MAX함수를 사용하여 최댓값을 구할 때 해당 컬럼의 최댓값만 찾고 싶을 때는 SELECT문에서 MAX(칼럼명)을 통해 바로 찾아주면 됩니다. 하지만 최댓값의 다른 칼럼까지 함께 출력하고 싶다면 서브쿼리를 사용하여 MAX문을 작성하는 것이 필요합니다.

[프로그래머스] 대여 기록이 존재하는 자동차 리스트 구하기 (Mysql)

https://school.programmers.co.kr/learn/courses/30/lessons/157341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스코드 풀이 ★ 차의 타입이 '세단이고' 이와 동시에 10월에 대여를 시작한 차를 찾아야하기 때문에 WHERE절에서 두가지 조건을 충족하는 CAR_ID를 추출해줍니다. ★ GROUP BY절 없이 출력하게 되면, CAR_ID가 중복되어 나오게 됩니다. 저희는 문제에서 주어진 것과 같이 자동차 리스트에 중복 ID가 없어야 하기 때문에 DISTINCT or GROUP BY를 사용하여 중복을 제거하여..

[프로그래머스] 자동차 평균 대여 기간 구하기 (Mysql)

https://school.programmers.co.kr/learn/courses/30/lessons/157342 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스코드 풀이 ★ 평균 대여 일수를 구하기 위해서는 날짜 차이를 가져올 수 있는 'DATEDIFF' 함수를 사용해야 합니다. EX) DATEDIFF(날짜1, 날짜2) => 날짜1 - 날짜2 ★ DATEDIFF를 사용하여 날짜 차이를 구한 뒤 +1을 해주는 이유는 끝날짜와 시작날짜의 차이가 0일때 이는 대여 일수 1을 뜻하기 때문입니다. EX) 2022-10-05 - 2022-10-05 => 대여..

반응형