본문 바로가기
DataBase

[MariaDB] if( 조건문, 참일때 값, 거짓일때 값 ) / ifnull( null, "치환값") null 값을 다른 숫자 또는 문자로 치환 / case문 / sql 한글깨짐 현상 UTF-8에서 ANSI로 변경 / source 경로 sql파일 실행시키기 / count(..

by bkuk 2022. 10. 17.

if( 조건문, 참일때 값거짓일때 값 )

select if( 1=2, '참', '거짓' );

 

deptno(부서번호)가 20인 사원급여가 2000을 기준으로 적은지 많은지에 대해서 출력

select ename, sal, if( sal < 2000, '적음', '많음') from emp where deptno = 30;

 

 ifnull(필드명, '치환값')

select ifnull( null, '참');

 

 ifnull(필드명, '치환값'), null 값을 다른 숫자 또는 문자로 치환

select comm, ifnull( comm, 0) from emp;

 

 ifnull(필드명, '치환값'), null 값을 다른 숫자 또는 문자로 치환

급여*12와 수당을 합쳐서 연봉을 출력

select sal, comm, sal*12+comm, sal*12+ifnull( comm, 0) from emp;


CASE 문법

CASE
	WHEN 조건
	THEN '반환 값'
	WHEN 조건
	THEN '반환 값'
	ELSE 'WHEN 조건에 해당 안되는 경우 반환 값'
END

 

1번이면 'one'을 출력, 2번이면 'two'를 출력, 그 외 'more' 출력

select case 1
    -> when 1 then 'one'
    -> when 2 then 'two'
    -> else 'more'
    -> end;

 

sql 파일에 저장 후 실행시키기

아래와 같이 sql 파일을 C:/mariadb/2 day/ 폴더 안의 저장

 

source C:/mariadb/2 day/ex01.sql;

 

위와 같이 한글 깨짐 현상이 발생했을 때는, 아래와 같이 인코딩 방식을 변경해주면 됩니다.

다른 이름으로 저장 → 인코딩(E) 방식을 기존 UTF-8에서 ANSI로 변경

 

count(컬럼명) 함수, 컬럼에 존재하는 데이터 갯수(행)를 가져오고 싶을 때

select count(empno) from emp;

 

14개가 맞는지 확인

select empno from emp;

 

count(컬럼명) 함수, 컬럼에 존재하는 데이터 갯수(행)를 가져오고 싶을 때

select count( sal ), count( comm ) from emp;

 

null 값을 제외하고 데이터 개수 출력

select count(comm), count(ifnull(comm,0)) from emp;

 

 

group by 컬럼명, 유형별로 갯수를 알고 싶을 때는 컬럼에 데이터를 그룹화

select count( * ) from emp group by deptno;

 

group by 컬럼명, 부서번호(deptno)를 그룹화 하여 최고 급여를 출력

select deptno, max(sal) from emp group by deptno;

 

group by 컬럼명, 직업을 그룹화하여  평균 연봉을 출력

select job, avg(sal) from emp group by job;

 

부서번호(deptno)로 정렬, 그다음 직업(job)을 기준으로 정렬 후 부서번호, 직업, 급여(sal) 출력

select deptno, job, sal
    -> from emp
    -> order by deptno, job;

 

 

부서번호(deptno)을 그룹화 후 직업(job)을 그룹화 한 후 detpno, job, 합산된 급여 출력

select deptno, job, sum(sal)
    -> from emp
    -> group by deptno, job;

 

부서번호를 그룹화 후 직업을 그룹화하여 급여가 2000이 이상인 사원의 부서번호, 직업, 합산된 급여를 출력

select deptno, job, sum(sal)
    -> from emp
    -> where sal >= 2000
    -> group by deptno, job;

 

부서번호를 그룹화 후 직업을 그룹화하여 합사된 급여가가 2000이 이상인 사원의 부서번호, 직업, 합산된 급여를 출력

select deptno, job, sum(sal)
    -> from emp
    -> where sum(sal) >= 2000
    -> group by deptno, job;

 

해결방법은, Having 함수를 사용.

select deptno, job, sum(sal)
    -> from emp
    -> group by deptno, job
    -> having sum(sal) >= 2000;


특정 컬럼을 그룹화 하는 GROUP BY 
특정 컬럼을 그룹화한 결과에 조건을 거는 HAVING
 
* WHERE는 그룹화 하기 전이고, HAVING은 그룹화 후에 조건입니다.

댓글