본문 바로가기
DataBase/SQL

유용한 SELECT문 정리(COUNT, CASE WHEN, LIKE, String 함수, ORDER BY 등

by S2채닝S2 2023. 2. 3.
-- db목록
SHOW DATABASES;

-- 앞으로의 쿼리에 대하여 prod라는 데이터베이스를 사용하겠다.
USE prod;

-- prod DB 안의 테이블 목록
SHOW TABLES;

-- prod DB의 session 테이블 데이터 전체 조회
SELECT *
FROM prod.session;

-- prod DB의 session 테이블에서 id, user_id, channel_id 속성만 가져옴
SELECT id, user_id, channel_id
FROM prod.session;

-- prod DB의 session 테이블의 모든 속성 데이터를 10개까지 조회
SELECT *
FROM prod.session
LIMIT 10;

-- 유일한 채널 ID를 알고 싶은 경우
select channel_id
from pROD.SEssion;

seleCT DistinCt channel_ID
FROm PROD.SEssion;

-- 채널 ID별 카운트를 하려면 GROUP BY/ COUNT 함수
SELECT channel_id, COUNT(1)
FROM prod.session 
GROUP BY 1;

-- 위의 쿼리와 같은 결과
SELECT chAnnel_id, COUNT(1)
FROM prod.session 
GROUP BY channel_id;


-- 테이블의 모든 레코드 수 카운트. COUNT(*). 하나의 레코드
SELECT * 
FROM prod.channel;

-- channel이 Facebook인 경우만 레코드 수 카운트
SELECT count(1)
from prod.session 
WHERE channel_id = 5; -- WHERE channel_id in (5)

-- CASE WHEN
SELECT channel_id,
	CASE
		WHEN channel_id in (1, 5, 6) THEN 'Social-Media' 
        WHEN channel_id in (2, 4) THEN 'Search-Engine'
        ELSE 'Something-Else'
	END channel_type
FROM prod.session;

SELECT DISTINCT channel_id,
	CASE
		WHEN channel_id in (1, 5, 6) THEN 'Social-Media' 
        WHEN channel_id in (2, 4) THEN 'Search-Engine'
        ELSE 'Something-Else'
	END channel_type
FROM prod.session;

-- COUNT 제대로 이해하기
SELECT * FROM prod.count_test;
SELECT COUNT(1) FROM prod.count_test;
SELECT COUNT(0) FROM prod.count_test;
SELECT COUNT(NULL) FROM prod.count_test;
SELECT COUNT(value) FROM prod.count_test;
SELECT COUNT(DISTINCT value) FROM prod.count_test;

-- WHERE 조건
SELECT COUNT(1) 
FROM prod.session 
WHERE channel_id IN (4, 5);

-- 채널 이름에 g가 들어가는게 몇개
SELECT COUNT(1) 
FROM prod.channel 
WHERE channel LIKE '%G%';

-- 채널 이름이 G로 시작하는게 몇개 
SELECT COUNT(1) 
FROM prod.channel 
WHERE channel LIKE 'G%';

-- 채널 이름에 o가 들어간거
SELECT DISTINCT channel  
FROM prod.channel 
WHERE channel LIKE '%o%';

-- 채널 이름에 o가 안들어간거
SELECT DISTINCT channel 
FROM prod.channel 
WHERE channel NOT LIKE '%o%';

-- String 함수들 써보기
SELECT 
	LENGTH(channel), 
    UPPER(channel), 
    LOWER(channel), 
    LEFT(channel, 4), 
    RPAD(channel, 15, '-'),
    LPAD(channel, 15, '_')
FROM prod.channel;

-- ORDER BY and NULL
-- ORDER BY는 오름차순이 기본, 내림차순을 보고 싶으면 DESC
SELECT value 
FROM prod.count_test 
ORDER BY value DESC;

-- 위와 같은 쿼리
SELECT value 
FROM prod.count_test 
ORDER BY  1 DESC;

SELECT value 
FROM prod.count_test 
ORDER BY value ASC;

-- DATE 관련 함수들 써보기
SELECT
	created, CONVERT_TZ(created, 'GMT',  'Asia/Seoul') seoul_time,
    YEAR(created) y, QUARTER(created) q, MONTH(created) m, MONTHNAME(created) mnn,
    DATE(created) d, HOUR(created) h, MINUTE(created) m, SECOND(created) s 
FROM session 
LIMIT 10;

SELECT
	DATEDIFF(now(), created) gap_in_days,
    DATE_ADD(created, INTERVAL 10 DAY) ten_days_after_created 
FROM session 
LIMIT 10;


SELECT STR_TO_DATE('01,5,2013', '%d,%m,%Y');

-- Type casting 문자열 100.0을 실수형으로 변경
SELECT cast('100.0' as float), convert('100.0', float);

최근댓글

최근글

skin by © 2024 ttuttak