DB(SQL)

SQL 함수

ari0930 2024. 4. 28. 20:30

문자연결 CONCAT()

select concat('ABC','DEF');

 

문자열 자르기 LEFT(문자열, 인덱스), RIGHT( 문자열, 인덱스 ), SUBSTR( 문자열, 시작 인덱스, 끝 인덱스 )

 

SELECT LEFT("ABCDEF",3);

 

왼쪽부터 3개가 출력된다.

 

SELECT SUBSTR('ABCDEFGH',3,2);

3부터 시작해서 2개가 문자를 나눈다.

 

 

문자 채우기 LPAD("문자열",채울개수,채울문자),RPAD()

SELECT LPAD("A",10,'#');

 

문자열을 찾기

SELECT FIELD('JAVA', 'SQL', 'JAVA', 'C')
      ,FIND_IN_SET('JAVA', 'SQL,JAVA,C')
      ,INSTR('네 인생을 살아라', '인생')
      ,LOCATE('인생', '네 인생을 살아라');

찾고자 하는 문자의 위치를 반환한다.

 

 

문자열 반복

SELECT REPEAT('*', 5);

 

숫자 올림, 낼림, 반올림

SELECT CEILING(123.56)
      ,FLOOR(123.56)
      ,ROUND(123.56)
      ,ROUND(123.56, 1)
      ,TRUNCATE(123.56, 1);

CEILING = 올림

FLOOR=내림

ROUND=반올림

ROUND(123.56, 1): ROUND 함수의 두 번째 매개변수를 사용하여 반올림할 소수점 자릿수를 지정할 수 있습니다. 

TRUNCATE(123.56, 1): TRUNCATE 함수는 주어진 숫자의 소수점 이하를 지정된 자릿수까지 잘라내어 반환합니다.

 

날짜 시간 반환 함수

SELECT NOW(),  
sysdate(),
curdate(),
curtime();

 

NOW, sysdate=> 현재 날짜와 시간

curdate => 현재 날짜

curtime => 현재 시간

 

형변환 함수 CAST(값, AS데이터타입)

 

select cast('1'AS UNSIGNED),
cast(2 AS CHAR(1));

첫 번째 거는 문자를 숫자로 두 번째 거는 숫자를 문자로 변환한다.

 

조건문

IF(조건, 수식 1, 수식 2)

조건이 참이면 수식 1을  거짓이면 수식 2가 출력된다.

 

IFNULL(수식 1, 수식 2) 수식 1을 반환 NULL이면 수식 2 반환

 

NULLIF(수식 1, 수식 2)두식값을 비교하여 같으면 NULL 아니면 수식 1의 값을 반환한다.

 

 

CASE문

WHEN 조건 THEN

ELSE

END

 

select CASE when 12500*450>500000 then'초과달성'
WHEN 2500*450>40000 THEN '달성'
else '미달성'
END;

 

집계합수

 

SELECT 집계함수

FROM 테이블명

WHERE

 

COUNT(칼럼명) 개수 조회하기

 

SELECT COUNT(*),count(고객번호)
FROM 고객;

 

SELECT SUM(마일리지),AVG(마일리지),MIN(마일리지),MAX(마일리지)
FROM 고객;

 

GROUP BY 그룹별로 묶어서 요약할 때 사용

GROUP BY 할 칼럼 명하고 묶을 컬러명 하고 같아한다

SELECT 도시,
COUNT(*) AS 고객수,
AVG(마일리지) AS 평균마일리지
FROM 고객
group by 도시;

도시별로 묶이게 된다.

 

select 담당자직위,도시,count(*) AS 고객수,AVG(마일리지) AS 평균마일리지
FROM 고객
group by 1,2
order by 1,2;

위의 코드는 담당자직위로 묶고 난 후 도시별로 묶어서 ORDER BY 담당자 직위와 도시순으로 정렬을 실행한 것이다.

 

GROUP BY로 묶은 거에 대해서 조건을 추가하기 위해서는 HAVING를 이용해야 한다

SELECT 도시
      ,COUNT(*) AS 고객수
      ,AVG(마일리지) AS 평균마일리지
FROM 고객
GROUP BY 도시
HAVING COUNT(*) >= 10;

여러 도시가 있었지만 고객수가 10 이상인 도시만 출력하게 된다.

 

 

WITH ROLLUP 마지막에 이걸 추가하면

위와 같이 총결과를 볼 수 있다.

 

 

 

반응형

'DB(SQL)' 카테고리의 다른 글

sql 서브 쿼리,인라인 뷰,CTE  (0) 2024.05.06
SQL JOIN 사용법  (0) 2024.04.28
SQL 조회 SELECT 사용법  (0) 2024.04.25
MYSQL 데이터 베이스 생성 과 테이블 만들기  (0) 2024.04.21