반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코딩독학
- 코딩
- 유학생
- SQL
- 영국석사
- 코드잇TIL
- 나혼자코딩
- 로지스틱회귀
- 런던
- for반복문
- 행렬
- 경사하강법
- sql연습문제
- numpy
- matplotlib
- 선형회귀
- 머신러닝
- 결정트리
- Seaborn
- 윈도우함수
- 오늘도코드잇
- 판다스
- 코드잇 TIL
- 데이터분석
- CSS
- 다항회귀
- 코드잇
- 코딩공부
- HTML
- 파이썬
Archives
- Today
- Total
영국 척척석사 유학생 일기장👩🏻🎓
(SQL) LEFT, RIGHT, SUBSTR 함수 및 연습문제 본문
728x90
반응형
1. LEFT, RIGHT
- LEFT : 왼쪽에서부터 지정된 개수의 문자를 추출하는 함수
- RIGHT : 오른쪽에서부터 지정된 개수의 문자를 추출하는 함수
- 하나의 열에 너무 많은 정보가 섞여있을때 사용됩니다.
- 즉, 필요한 정보가 해당 열에서 왼쪽이나 오른쪽에 존재할 때 사용됩니다.
- 첫번째 인수 : 분리할 열 그 자체
- 두번째 인수 : 해당 문자열로부터 추출하려는 문자의 개수
- 예시 : 학생들의 행동을 분석하기 위해 학생 ID와 급여 정보 추출하기
student_information |
3839581, F, san francisco, 3.7, 100000 |
2842940, M, chicago, 3.8, 150000 |
2842940, F, new york city, 3.9, 200000 |
2849201, M, boston, 3.5, 125000 |
LEFT(student_information, 8) AS student_id
RIGHT(student_infromation, 6) AS salary
2. SUBSTR
- SUBSTR : 지정한 위치부터 문자열을 잘라낼 때 사용하는 함수
- 첫번째 인수 : 분리해 내려는 문자열 그 자체
- 두번째 인수 : 추출을 시작하는 위치
- 세번째 인수 : 추출하려는 문자의 개수
- 예시 : 학생들의 성별 추출 (표의 11번째에 위치합니다.)
SUBSTR(student_information, 11, 1) AS gender
3. 연습문제
문제1) accounts 테이블에는 각 회사의 website를 포함하는 열이 있습니다. 마지막 세 자리는 사용 중인 웹 주소 유형을 지정합니다. accounts 테이블에 있는 각 웹사이트 유형의 수를 제공하시오.
SELECT RIGHT(website, 3) AS domain, COUNT(*) num_companies
FROM accounts
GROUP BY 1
ORDER BY 2 DESC;
문제2) accounts 테이블을 사용하여 각 회사 이름의 첫 글자를 가져와 각 글자(또는 숫자)로 시작하는 회사 이름의 분포를 확인하시오.
★ UPPER : 대문자
SELECT LEFT(UPPER(name), 1) AS first_letter, COUNT(*) num_companies
FROM accounts
GROUP BY 1
ORDER BY 2 DESC;
문제3) accounts 테이블과 CASE 문을 사용하여 숫자로 시작하는 회사 이름 그룹과 문자로 시작하는 회사 이름 그룹의 두 그룹을 만듭니다. 회사 이름의 몇 퍼센트가 문자로 시작합니까?
🔻(참고)CASE문🔻
SELECT SUM(num) nums, SUM(letter) letters
FROM (SELECT name,
CASE WHEN LEFT(UPPER(name)), 1) IN ('0','1','2','3','4','5','6','7','8','9')
THEN 1 ELSE 0 END AS num,
CASE WHEN LEFT(UPPER(name)), 1) IN ('0','1','2','3','4','5','6','7','8','9')
THEN 0 ELSE 1 END AS letter
FROM accounts) t1;
- 문자로 시작하는 회사 이름 350개와 숫자로 시작하는 회사 이름 1개가 있습니다. 이것은 99.7% 입니다.
문제4) 모음은 'a', 'e', 'i', 'o', 'u'로 간주합니다. 회사 이름의 몇 퍼센트가 모음으로 시작하고 몇 퍼센트가 모음으로 시작합니까?
SELECT SUM(vowels) vowels, SUM(other) other
FROM (SELECT name,
CASE WHEN LEFT(UPPER(name), 1) IN ('A','E','I','O','U')
THEN 1 ELSE 0 END AS vowels,
CASE WHEN LEFT(UPPER(name), 1) IN ('A','E','I','O','U')
THEN 0 ELSE 1 END AS other
FROM accounts) t1;
728x90
반응형
'코딩공부 > SQL' 카테고리의 다른 글
(SQL) CAST 함수 및 연습문제 (0) | 2024.05.29 |
---|---|
(SQL) CONCAT 함수 및 연습문제 (0) | 2024.05.28 |
(SQL) WITH 서브쿼리 연습문제 (0) | 2024.05.23 |
(SQL) 서브쿼리 연습문제 및 풀이모음 (0) | 2024.05.17 |
(SQL) 서브쿼리 연습문제 및 풀이 (0) | 2024.05.16 |