사용할 테이블 : [channel테이블][session 테이블]
사용방법
SELECT 필드이름1, 필드이름2, …
FROM 테이블이름
WHERE 선택조건
GROUP BY 필드이름1, 필드이름2, ...
ORDER BY 필드이름 [ASC|DESC] -- 필드 이름 대신에 숫자 사용 가능
LIMIT N;
예제
SELECT * -- *는 모든 필드를 지칭하는 표현
FROM prod.session; -- 앞서 USE prod;를 수행했다면 FROM session도 사용 가능
SELECT *
FROM prod.session
LIMIT 10;
SELECT DISTINCT channel_id -- 유일한 채널 ID를 알고 싶은 경우
FROM prod.session;
SELECT channel_id, COUNT(1) -- 채널 ID별 카운트를 하려면 GROUP BY/COUNT 함수!!
FROM prod.session
GROUP BY 1; -- 1을 쓰면 select의 첫번째 필드로 그루핑하는 것! = channel_id
SELECT COUNT(1) -- 테이블의 모든 레코드 수 카운트. COUNT(*). 하나의 레코드
FROM prod.session;
SELECT * -- channel 테이블의 모든 레코드들을 표시
FROM prod.channel;
SELECT COUNT(1)
FROM prod.session
WHERE channel_id = 5; -- channel이 Facebook경우만 레코드수 카운트
CASE
WHEN 조건1 THEN 값1
WHEN 조건2 THEN 값2
ELSE 값3
END 필드이름
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 COUNT(1) FROM prod.count_test -> 7
SELECT COUNT(0) FROM prod.count_test -> 7
SELECT COUNT(NULL) FROM prod.count_test -> 0
SELECT COUNT(value) FROM prod.count_test -> 6
SELECT COUNT(DISTINCT value) FROM prod.count_test -> 4
SELECT COUNT(1)
FROM prod.session
WHERE channel_id IN (4, 5);
channel_id가 4또는 5인 레코드의 카운트
SELECT COUNT(1)
FROM prod.channel
WHERE channel LIKE '%G%';
channel이름이 G를 포함한 레코드의 카운트
SELECT DISTINCT channel
FROM prod.channel
WHERE channel LIKE '%o%';
channel 이름에 o가 들어간 레코드들 중 중복을 제거한 카운트
SELECT DISTINCT channel
FROM prod.channel
WHERE channel NOT LIKE '%o%';
channel 이름에 o가 들어가지 않은 레코드들 중 중복을 제거한 카운트
SELECT
LENGTH(channel),
UPPER(channel),
LOWER(channel),
LEFT(channel, 4),
RPAD(channel, 15, '-'),
LPAD(channel, 15, '-')
FROM prod.channel;
SELECT value
FROM prod.count_test
ORDER BY value DESC;
→ 431100NULL
SELECT value
FROM prod.count_test
ORDER BY value ASC;
→ NULL001134
예제1
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;
결과1

예제2
SELECT created,
DATEDIFF(now(), created) gap_in_days,
DATE_ADD(created, INTERVAL 10 DAY) ten_days_after_created
FROM session
LIMIT 10;
결과2

예제3
SELECT STR_TO_DATE('01,5,2013','%d,%m,%Y'); -- 2013-05-01
예제