Coding Diary.

(SQL) CONCAT 함수 및 연습문제 본문

Coding/SQL

(SQL) CONCAT 함수 및 연습문제

life-of-nomad 2024. 5. 28. 14:35
728x90
반응형
지난 글에서 LEFT, RIGHT, SUBSTR 함수를 이용해서 문자열을 분리하는 방법에 대해 알아보았습니다.
이번 글에서는 두 개 이상의 표현식을 연결하는 CONCAT 함수에 대해 알아보고 이를 활용하여 문제를 풀어보겠습니다.

 

🔻(참고)LEFT,RIGHT,SUBSTR🔻

 

(SQL) LEFT, RIGHT, SUBSTR 함수 및 연습문제

1. LEFT, RIGHTLEFT : 왼쪽에서부터 지정된 개수의 문자를 추출하는 함수RIGHT : 오른쪽에서부터 지정된 개수의 문자를 추출하는 함수하나의 열에 너무 많은 정보가 섞여있을때 사용됩니다.즉, 필요한

life-of-nomad.tistory.com

 

1. CONCAT 

  • CONCAT은 고유 식별자를 만들어야 하는데 고유 식별자가 여러 열에 걸쳐서 쪼개져 있는 상황에서 자주 사용됩니다.
  • CONCAT 함수에는 결합하려고 하는 표현식의 개수에 따라서 원하는 만큼의 인수를 넣을 수 있습니다.

출처 ❘ Udacity

  • 아래의 예시에서는 날짜 정보가 특정 정보의 고유 식별자라고 가정하겠습니다.

출처 ❘ Udacity

  • 주어진 데이터 테이블은 세 개의 행으로 구성되며 각각에는 일, 월, 연도가 분리되어 있습니다.
  • 이때 CONCAT 함수를 통해 하이픈(-)을 사용해서 월, 일, 연도 값을 하나로 묶고 이를 date 열이라고 부르면 이를 시간에 따른 추세 등을 파악할 때 필요한 고유 식별자로 사용할 수 있습니다. 

 

2. 연습문제

ERD

 

문제1) 회사가 모든 영업 담당자의 성과를 평가하려고 한다고 가정하겠습니다. 각 영업 담당자는 특정 지역에서 일하도록 지정됩니다. HR팀이 이해하기 쉽도록 'sales_reps.id', '_'(밑줄), 'region.name'을 각 영업 담당자에 대해 'EMP_ID_REGION'으로 연결하여 표시합니다.

SELECT CONCAT(sales_reps.id, '_', region.name) EMP_ID_REGION, sales_reps.name
FROM sales_reps
JOIN region
ON sales_reps.region_id = region.id;

 

 

 

문제2) 'accounts' 테이블에서 고객의 이름을 표시하고, 'coordinate'를 연결(lat위도, log경도)로, 기본 연락처의 'email id'를 <first letter of the primary_poc><last letter of the primary_poc>@<extracted name and domain from the website>로 표시합니다.

SELECT name, CONCAT(lat,', ',long) coordinate, 
	CONCAT(LEFT(primary_poc, 1),RIGHT(primary_poc,1), '@', SUBSTR(website, 5)) email
FROM accounts;

 

문제3) web_events 테이블에서 account_id, '_', channel, '_', 특정 채널의 웹 이벤트 수의 연결된 값을 표시합니다.

WITH t1 AS(
	SELECT account_id, channel, COUNT(*)
    FROM web_events
    GROUP BY 1, 2
    ORDER BY 1
    )
SELECT CONCAT(t1.account_id, '_', t1.channel, '_', count)
FROM t1;

728x90
반응형