본문 바로가기
문과생애긔개발자_공부/SQL

POSTGRE SQL (AS, WHERE, GROUP BY, %, DESC) 왕초보단계

by animeel 2022. 7. 12.

글 하나에 쓰면 되는데 왜 두개로 나눴을까요?

그냥.. 그냥입니다^^

 

문제보시죳

 

2-1. 사원마스터(HRM.EMPMST) 에 이씨 성을 가진 사람의 인원수를 조회하라.

2-2. 사원마스터(HRM.EMPMST) 에 이름(KONAME)의 두번째 글자가 이인 사람의 인원수를 조회하라.

2-3. 사원마스터(HRM.EMPMST) 에 이름(KONAME)의 마지막 글자가 이인 사람의 인원수를 조회하라.

2-4. 사원마스터(HRM.EMPMST) 의 재직중(ENTCOFLG = '1')인 사원의 부서별 인원을 조회하여 인원이 많은 순으로 정렬하라.

 

1번 문제는 쉽죵~ KONAME에 '이'로 시작하는 SQL문을 작성해주면 됩니다.

하지만 이름은 한글자가 아니기 때문에 KONAME = '이' 요따구로 작성하면 검색이 안되겠죠

그래서 %를 넣어줍니다. %는 위치로 구분하는데 어쩌구 저쩌구로 해석하면 됩니다.

즉 '이%' 이로 시작하는 어쩌구 저쩌구들을 검색하고 싶을때 사용하세요.

그리고 인원수를 셀때는 COUNT(원하는컬럼) 이렇게 넣어주면 자동으로 세어주겠죠~?

 

 SELECT COUNT(EMPNO) AS EMPCNT  --사원수
   FROM HRM.EMPMST
 WHERE KONAME LIKE '이%'

 

AS라는 녀석도 힘있게 나와주었는데요 방금 조회한 컬럼명을 다른 것으로 지칭해줄 때 사용합니다.

AS A, AS B 이런식으로 테이블을 지정해주고 그 테이블에서 필요한 컬럼을 선택해줄 때도 사용합니다.

다른 예시 나올때 다시 말씀드릴게요. 병합시 아주 유용합니다.

긴 테이블명을 다 쓰고 싶지 않다면 말이죵^^

 

 

2번 문제는 두번째 글자가 '이'인 사람을 원하네요

그렇다면 '랜덤글자 + 이 + 랜덤글자' 이런식으로 검색하면 되겠네요~

하지만 앞에 김땡이 이런식으로 두글자가 들어가버리면 안되니까 %를 사용할 순 없겠군요

그렇다면?? _ 언더바를 사용해서 한 글자만 비워주고 가운데 이 그다음에 글자는 어쩌구저쩌구인 %을 넣어줍니다.

 

 SELECT COUNT(EMPNO) AS EMPCNT  --사원수
    FROM HRM.EMPMST
 WHERE KONAME LIKE '_이%'

 

 

3번 문제는 마지막이 '이'라고 하니 어쩌구저쩌구 + 이 넣어주면 되니까 젤 쉽죵

 

 SELECT COUNT(EMPNO) AS EMPCNT  --사원수
    FROM HRM.EMPMST
 WHERE KONAME LIKE '%이'

 


4번 문제는 재직중이 '1'인 사원조회라는 조건과 인원이 많은 순으로 정렬하라는 정렬 조건이 들어있네요.

조건을 쓸땐 어떻게 할까요?

WHERE를 사용해주면 됩니다. WHERE는 SELECT로 컬럼을 조회할 때 WHERE절에 있는 조건으로 결과값을 제한해 줍니다. AND나 OR로 조건을 추가해 줄 수 있고 IN을 사용할 수도 있어요. AND, OR는 컬럼이 다를때 사용하고 IN의 경우 컬럼은 같은데 값의 조건이 다를때 사용할 수 있습니다. 

다음에 예시가 나오면 다시 설명해드리죠~

 

SELECT PARTCD          --부서코드
     , COUNT(EMPNO) AS EMPCNT
   FROM HRM.EMPMST
WHERE ENTCOFLG = '1'   --WHERE 조건절
GROUP BY PARTCD
ORDER BY COUNT(EMPNO) DESC;

 

갑자기 중간에 GROUP BY라는 녀석이 생겼죠 
저녀석을 빼고 쿼리를 돌리면 아래와 같은 에러메시지가 뜹니다.

 

EMPMST라는 테이블에 PARTCD라는 컬럼은 GROUP BY 절에 꼭 넣어야된다는 말이죵

왜일까요? 일단 넣으라고 하니 넣어봅니다...

가 아니라 지금 EMPNO 사원번호를 통해서 사원수를 조사했는데 그 사원수가 전체가 아닌 

부서별 사원수를 알고 싶은거기 때문에 부서코드를 SELECT해줬잖아요?

그래서 그 조회하는 사원수를 부서별로 알고 싶으니까 그렇게 알려줘! 라고 그룹을 정해주는게 GROUP BY입니다.

아 그러니까 사원수를 세는데 그걸 부서별로 세달라 이거지? --> 맞아유




오늘도 간단한데 뭔가 길었죠?

무에서 유를 창조하는 즐거운 티스토리 생활~

다음시간에 또 만납시다... A BIENTOT