-
[My SQL] 숫자 연산자 , 문자 연산자알고리즘/My SQL 2023. 2. 10. 15:09
숫자 연산자
BETWEEN
NOT BETWEEN {MIN} AND {MAX} 두 값 사이가 아닌 곳에 있음 BETWEEN {MIN} AND {MAX} 두 값 사이에 있음 -- 코드를 입력하세요 SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(*) AS RECORDS FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY H WHERE YEAR(START_DATE)=2022 AND MONTH(START_DATE) BETWEEN 8 AND 10 AND CAR_ID IN (SELECT HH.CAR_ID FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY HH WHERE YEAR(HH.START_DATE)=2022 AND MONTH(HH.START_DATE) BETWEEN 8 AND 10 GROUP BY HH.CAR_ID HAVING COUNT(*) >=5 ) # WHERE YEAR(HH.START_DATE)=2022 AND MONTH(HH.START_DATE) BETWEEN 8 AND 10) GROUP BY MONTH,CAR_ID HAVING COUNT(*)>0 ORDER BY MONTH,CAR_ID DESC
IN
IN (...) 괄호 안의 값들 가운데 있음 NOT IN (...) 괄호 안의 값들 가운데 없음 LIKE
LIKE '... % ...' 0~N개 문자를 가진 패턴 LIKE '... _ ...' _ 갯수만큼의 문자를 가진 패턴 소수자리
ROUND 반올림 CEIL 올림 FLOOR 내림 절대값
ABS 절대값 괄호 中 계산
GREATEST (괄호 안에서) 가장 큰 값 LEAST (괄호 안에서) 가장 작은 값 Column 계산
MAX 가장 큰 값 MIN 가장 작은 값 COUNT 갯수 (NULL값 제외) SUM 총합 AVG 평균 값 SELECT PRODUCT_CODE , SUM(P.PRICE * S.SALES_AMOUNT) AS SALES FROM PRODUCT P JOIN OFFLINE_SALE S ON P.PRODUCT_ID = S.PRODUCT_ID GROUP BY PRODUCT_CODE ORDER BY SALES DESC , PRODUCT_CODE
SELECT YEAR(SALES_DATE) AS YEAR, MONTH(SALES_DATE) AS MONTH, COUNT(DISTINCT I.USER_ID) AS PUCHASED_USERS, ROUND(COUNT(DISTINCT I.USER_ID) / COUNT, 1) AS PUCHASED_RATIO FROM ONLINE_SALE S INNER JOIN ( SELECT USER_ID, COUNT(*) OVER() AS COUNT FROM USER_INFO WHERE JOINED BETWEEN '2021-01-01' AND '2021-12-31' ) I ON I.USER_ID = S.USER_ID GROUP BY YEAR, MONTH ORDER BY YEAR, MONTH
난이도 5개
테이블에서 2021년에 가입한 전체 회원들 중 상품을 구매한 회원수와 상품을 구매한 회원의 비율(=2021년에 가입한 회원 중 상품을 구매한 회원수 / 2021년에 가입한 전체 회원 수)을 년, 월 별로 출력하는 SQL문을 작성해주세요. 상품을 구매한 회원의 비율은 소수점 두번째자리에서 반올림하고, 전체 결과는 년을 기준으로 오름차순 정렬해주시고 년이 같다면 월을 기준으로 오름차순 정렬해주세요.
즉, 구매한 사람 / 2021에 가입한 전체 회원
1. 먼저 구매한 사람 중에 중복이 있을 수 있으니 DISTINCT 사용
2. 2021에 가입한 전체 회원은 서브 쿼리로 (SELECT COUNT(*) ~~~ 사용)
3. JOINED ON USER_ID
-- 코드를 입력하세요 SELECT YEAR(S.SALES_DATE) AS YEAR, MONTH(S.SALES_DATE) AS MONTH, COUNT(DISTINCT S.USER_ID) AS PUCHASED_USERS , ROUND(COUNT(DISTINCT S.USER_ID)/ (SELECT COUNT(*) FROM USER_INFO WHERE YEAR(JOINED)=2021) ,1) AS PUCHASED_RATIO FROM USER_INFO I JOIN ONLINE_SALE S ON I.USER_ID = S.USER_ID WHERE I.JOINED LIKE '2021%' GROUP BY YEAR,MONTH ORDER BY YEAR,MONTH
제곱
POW(A, B), POWER(A, B) A를 B만큼 제곱 SQRT 제곱근 정수 버림 - 음수일시 정수(0: 1의 자리 , -1 : 10의 자리)
TRUNCATE(N, n) N을 소숫점 n자리까지 선택 문자 연산자
대소문자 변환
UCASE, UPPER 모두 대문자로 LCASE, LOWER 모두 소문자로 문자열 이어 붙이기
CONCAT(...) 괄호 안의 내용 이어붙임 CONCAT_WS(S, ...) 괄호 안의 내용 S로 이어붙임 문자열 자르기
SUBSTR, SUBSTRING 주어진 값에 따라 문자열 자름 LEFT 왼쪽부터 N글자 RIGHT 오른쪽부터 N글자 -- 코드를 입력하세요 SELECT LEFT(PRODUCT_CODE,2) AS CATEGORY, COUNT(*) AS PRODUCTS FROM PRODUCT GROUP BY LEFT(PRODUCT_CODE,2) ORDER BY PRODUCT_CODE
문자열 길이
LENGTH 문자열의 바이트 길이 CHAR_LENGTH, CHARACTER_LEGNTH 문자열의 문자 길이 문자열 공백제거
TRIM 양쪽 공백 제거 LTRIM 왼쪽 공백 제거 RTRIM 오른쪽 공백 제거 문자열 이어 붙이기
LPAD(S, N, P) S가 N글자가 될 때까지 P를 이어붙임 RPAD(S, N, P) S가 N글자가 될 때까지 P를 이어붙임 문자열 변경
REPLACE(S, A, B) S중 A를 B로 변경 문자열 인덱스 찾기
INSTR(S, s) S중 s의 첫 위치 반환, 없을 시 0 문자열 자료형 변경
CAST(A, T) A를 T 자료형으로 변환 '알고리즘 > My SQL' 카테고리의 다른 글
[My SQL] 시간 연산자 , 날짜 연산자 (0) 2023.02.10 [My SQL] GROUP BY ,JOIN - 여러 테이블 조립하기 (0) 2023.02.10 [My SQL] 전반적인 문법 - select (0) 2023.02.10