집계함수는 테이블 내의 값 중 원하는 값 또는 연산을 도와준다.
SELCET 구문이나 HAVING절에서 사용한다.
(3)SELECT
o.o_id AS '구매자 아이디'
,sum(o.o_amount) AS '총 주문수량'
,AVG(o.o_amount) AS '평균 주문수량'
,ROUND(AVG(o.o_amount),1) AS '평균 주문수량'
,COUNT(o.o_amount) AS '총 주문횟수'
,MAX(o.o_amount) AS '최대 주문수량'
,MIN(o.o_amount) AS '최소 주문수량'
(1)FROM
tb_order AS o
(2)GROUP BY o.o_id
;
round( n , 반올림 할 소수점 자리수 )
실행순서를 잊지말자
(1) FROM tb_order에서
(2) tb_order의 id별로 그룹핑을 한 뒤
(3) SELECT 작업을 실행한다.
테이블의 o_amount의 합계를 구할 수 있다.
테이블의 o_amount의 평균을 구할 수 있다.
테이블의 o_amount의 최대값과 최소값을 구할 수 있다.
테이블의 o_amount의 속성별 평균값을 구할 수 있다. 단, 반올림에 주의하여야 한다.
기본표기법
소수점 표기 방법 (소수점 첫째짜리까지 표기.)
테이블의 행의 갯수를 셀 수 있다.
데이터 형식 변환 함수
형변환
SELECT
NOW() AS 'DATETIME'
,CAST(NOW() AS DATE) AS 'DATE'
,CAST(NOW() AS TIME) AS 'TIME';
SELECT
CONVERT (AVG(o.o_amount), SIGNED INTEGER) AS '평균 주문 개수'
FROM
tb_order o;
-- 정수 타입: 음수까지 표현할 수 있는 SIGNED 타입
-- 양수만을 표현할 수 있는 UNSIGNED 타입
형변환
SELECT
NOW() AS 'DATETIME'
,CAST(NOW() AS DATE) AS 'DATE'
,CAST(NOW() AS TIME) AS 'TIME';
SELECT
CONVERT (AVG(o.o_amount), SIGNED INTEGER) AS '평균 주문 개수'
FROM
tb_order o;
-- 정수 타입: 음수까지 표현할 수 있는 SIGNED 타입
-- 양수만을 표현할 수 있는 UNSIGNED 타입
문자열 연결함수
SELECT
CONCAT(m.m_id, ' : ',m.m_name) AS '회원 아이디 : 회원 이름'
FROM
tb_member m;
-- 문자와 문자를 더함 (정수로 변환되서 연산됨)
SELECT '100' + '200’ ;
-- 문자와 문자를 연결 (문자로 처리)
SELECT CONCAT('100', '200’);
-- 정수와 문자를 연결 (정수가 문자로 변환되서 처리)
SELECT CONCAT(100, '200’);
-- 정수와 문자를 연결 (정수가 문자로 변환되서 처리)
SELECT CONCAT(100, '200’);
-- 정수인 2로 변환되어서 비교
SELECT 1 > '2mega’;
-- 정수인 2로 변환되어서 비교
SELECT 3 > '2MEGA’;
-- 문자는 0으로 변환됨
SELECT 0 = 'mega2';
SELECT IF (조건식, true시 반환하는 값, false시 반환하는 값);
-- 조건이 null이 아닐 경우 조건을 반환.
SELECT IFNULL(조건, null일경우 반환하는 값);
-- 조건1과 조건2가 같을 경우 null값을 반환, 다를경우 조건1을 반환
SELECT NULLIF(조건1,조건2);
SELECT IF (/*조건식*/10>20, '참입니다.', '거짓입니다’);
SELECT IFNULL(NULL, '널입니다.'), IFNULL(100, '널');
값이 NULL 이라면 '널입니다.'문자열 출력 , NULL이 아니라면 100 출력
SELECT NULLIF(10,10), NULLIF(30,10);
값을 비교했을때 같다면 NULL 출력 같지않다면 30 출력
-- 문자를 ascii 코드로 변환 / ascii코드를 문자로 변환
SELECT ASCII('A'), CHAR(65);
-- 공백을 제거
SELECT TRIM(' KSMART35 ') AS result;
-- 반복
SELECT REPEAT('KSMART', 3) AS result;
-- 문자열 대체
SELECT REPLACE ('KSMART35기', 'KSMART' , '한국스마트정보교육원') AS result;
-- 문자열을 거꾸로 출력
SELECT REVERSE ('KSMART35') AS result;
-- 공백을 추가, 문자열 연결
SELECT CONCAT('KSMART', SPACE(15), '35기') AS result;
SELECT
ADDDATE('2020-03-18', INTERVAL 31 DAY)
,ADDDATE('2020-03-18', INTERVAL 1 MONTH)
,SUBDATE('2020-03-18', INTERVAL 31 DAY)
,SUBDATE('2020-03-18', INTERVAL 1 MONTH)
,ADDTIME('2020-03-18 23:59:59', '1:1:1')
,ADDTIME('15:00:00', '2:10:10')
,SUBTIME('2020-03-18 23:59:59', '1:1:1')
,SUBTIME('15:00:00', '2:10:10');
SELECT
YEAR(CURDATE())
,MONTH(CURDATE())
,DAYOFMONTH(CURDATE());
SELECT
HOUR(CURTIME())
,MINUTE(CURRENT_TIME())
,SECOND(CURRENT_TIME())
,MICROSECOND(CURRENT_TIME());
SELECT DATE(NOW()), TIME(NOW());
SELECT
DATEDIFF('2020-08-06', NOW())
,TIMEDIFF('17:30:01', CURRENT_TIME());
SELECT
DAYOFWEEK(CURDATE())
,MONTHNAME(CURDATE())
,DAYOFYEAR(CURDATE());
SELECT LAST_DAY('2020-03-18');
SELECT SLEEP(3);
SELECT
a.*
FROM
tb_member a,(SELECT SLEEP(3)) b;
SET @myNumber1 = 1;
SET @myNumber2 = 2.3;
SET @myStr1 = '합계:';
SELECT
@myNumber1 AS '변수1'
,@myNumber2 AS '변수2';
SELECT
@myStr1
,@myNumber1 + @myNumber2) AS '합계';
SELECT
@myStr1
,ROUND((@myNumber1 + @myNumber2), 3) AS '합계';
SELECT 문 조건 연산자
비교 연산자
MySQL 에서 비교연산자는 TRUE(1), FALSE(0), NULL값 또는 연산에 대한 결과를 리턴한다.
논리 연산자
MySQL 에서 논리 연산자는 TRUE(참), FALSE(거짓) 두가지를 가지고 비교하는 연산자 이다.
대입 연산자
@cValue := g.g_price
오른쪽 값을 왼쪽에 대입한다.
//비교연산자와는 다르다//
@cValue = g.g_price
오른쪽 값을 왼쪽 값과 비교한다.
SELECT 문 조건 LIKE 키워드
지정한 패턴과 일치하는 문자열, 날짜, 시간 값을 검색