SQL I : Day 3 String Processing Functions 3문제 풀이


1667. Fix Names in a Table

(1) 코드 작성

SELECT USER_ID, CONCAT(UPPER(LEFT(NAME, 1)), LOWER(RIGHT(NAME, LENGTH(NAME)-1))) AS NAME
FROM USERS
ORDER BY USER_ID

(2) 코드 리뷰 및 회고

  • 문제는 이름을 첫 글자를 대문자, 나머지를 소문자로 변경하는 것이다.
    • 이 조건을 만족하기 위해 UPPER, LEFT, LOWER, RIGHT 함수를 사용함
    • 두 경우를 결합하기 위해 CONCAT 함수를 사용
  • UPPER, LOWER, LEFT, RIGHT 함수는 알았으나 두 개를 묶는 방법을 몰라서 검색을 통해 배웠다.
    • CONCAT : 여러 문자열을 하나의 문자열로 합치는 함수
  • 👉 문제 보러가기


1484. Group Sold Products By The Date

(1) 코드 작성

SELECT SELL_DATE, COUNT(DISTINCT PRODUCT) AS NUM_SOLD
     , GROUP_CONCAT(DISTINCT PRODUCT) AS PRODUCTS
FROM ACTIVITIES
GROUP BY SELL_DATE
ORDER BY SELL_DATE

(2) 코드 리뷰 및 회고

  • 문제는 SELL_DATE로 그룹화하여 상품 개수, 상품 리스트를 출력하는 것이다.
  • 이때, 그룹화하여 상품을 출력하면 1개의 값만 출력하기 때문에 묶어줘야한다.
    • 이 조건을 만족시키기 위해 GROUP_CONCAT() 를 사용했다.
    • GROUP BY(DISTINCT 컬럼명) / GROUP BY(컬럼명 SEPARATOR '구분자') 등을 사용할 수 있음
    • 구분자 명령어를 사용하지 않으면 기본값으로 ‘,’로 문자열이 구분됨
  • DISTINCT 로 중복 시 하나의 값만 출력될 수 있도록 지정했다.
  • 이 문제를 통해 GROUP_CONCAT을 이용하면 특정 데이터들을 한 줄로 표현할 수 있음을 배웠다!
    • 오늘도 하나 배웠다 ! 발전! 🙋🏻‍♀️
  • 👉 문제 보러가기


1527. Patients With a Condition

(1) 코드 작성

SELECT PATIENT_ID, PATIENT_NAME, CONDITIONS
FROM PATIENTS
WHERE CONDITIONS LIKE 'DIAB1%' OR CONDITIONS LIKE '% DIAB1%'

(2) 코드 리뷰 및 회고

  • 이번 문제는 제 1형 당뇨병 환자의 정보를 불러오는 것이다.
    • 이 조건을 만족하기 위해 DIAB1 를 접두사로 사용하는 경우를 추가했다.
    • WHERE CONDITIONS LIKE 'DIAB1%' OR CONDITIONS LIKE '%DIAB1%' 로 하면 오답처리됨
    • 이유는 문자열 중 맨 앞이거나, ‘ACNE DIAB100’ 처럼 공백 1칸과 함께 시작하는 경우만 해당
  • EASY 😎
  • 👉 문제 보러가기


👩🏻‍💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.

댓글남기기