글 하나에 쓰면 되는데 왜 두개로 나눴을까요?
그냥.. 그냥입니다^^
문제보시죳
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
'문과생애긔개발자_공부 > SQL' 카테고리의 다른 글
POSTGRE SQL (WHERE, ROUND, BETWEEN, OR, IN) 초보단계 (0) | 2022.07.18 |
---|---|
POSTGRE SQL (DISTINCT, GROUP BY, HAVING, SUBQUERY, IN, SUM, AVG) 왕초보단계 (0) | 2022.07.12 |
POSTGRE SQL (GROUP BY, NULL, COUNT) 왕초보단계 (0) | 2022.07.12 |
POSTGRE SQL (SELECT, ORDER BY, DESC, 주석달기) 왕초보단계 (0) | 2022.07.12 |
ANSI JOIN, ORACLE JOIN (LEFT OUTER JOIN 여러개) (0) | 2022.07.01 |