[211208] 교육 38일차
ORDER BY
SELECT * FROM ScoreT ORDER BY stId (ASC);
SELECT * FROM ScoreT ORDER BY stId DESC;
ASC : 오름차순 정렬( 생략가능 )
DESC : 내림차순 정렬
GROUP BY
SELECT AVG(score), stId FROM ScoreT GROUP BY stId;
같은 stId 값을 가진 것들끼리 묶어서 평균을 낸다.
ROUND
SELECT AVG(score) AS AVG, stId FROM ScoreT GROUP BY stId;
SELECT ROUND( AVG(score) ) AS AVG, -- 반올림
stId FROM ScoreT GROUP BY stId;
SELECT ROUND( AVG(score) , 2 ) AS AVG, -- 소수점 2자리
stId FROM ScoreT GROUP BY stId;
SELECT ROUND( AVG(score) , -1 ) AS AVG, -- 1자리 반올림
stId FROM ScoreT GROUP BY stId;
VIEW
실제로 테이블이 생긴 것은 아니고 복잡한 SELECT 문을 편하게 쓰기 위한 객체
CREATE VIEW Avg_V AS
SELECT ROUND( AVG(score) , 2 ) AS AVG, stId FROM ScoreT GROUP BY stId;
SELECT * FROM Avg_V;
임시 테이블
VIEW 가 테이블을 볼 수 있는 창이라면 위의 코드는 실제 테이블을 생성하고 데이터 입력까지 할 수 있다.
CREATE TABLE avg_T AS
SELECT ROUND( AVG(score) , 2 ) AS AVG, stId FROM ScoreT GROUP BY stId
VIEW와 임시테이블의 차이
VIEW - 원본 테이블이 삭제되면 결과가 바로 반영된다.
임시테이블 - 새로 만든 테이블이기 때문에 원본 테이블이 삭제되어도 그대로 유지된다.
Having
통계처리 이후에 동작하여 AGGREGATE FUNCTION 의 결과를 제한할 수 있다.
SELECT AVG(score), stId FROM ScoreT GROUP BY stId HAVING AVG(score) > 75;
동작순서
SELECT & WHERE > GROUP BY > AGGREGATE FUNCTION > HAVING
JOIN
CROSS JOIN
SELECT * FROM StudentT , SubjectT
StudentT - 6 rows, SubjectT - 3 rows
Cross Join -> 18 rows
( 양쪽 레코드를 모든 경우의 수로 보여준다. 3 * 6 = 18 )
SELECT * FROM StudentT, SubjectT WHERE StudentT.stId = 10101;
SELECT * FROM StudentT A, SubjectT B WHERE A.stId = 10101;
필드명을 언급할 경우 소속 테이블을 명시하는 것이 좋다.
SELF JOIN
SELECT * FROM ScoreT A, ScoreT B;
같은 테이블을 합쳐서 보여준다. 동일한 데이터를 가진 레코드를 찾을때 주로 사용한다.
SELECT * FROM ScoreT A, ScoreT B WHERE A.score = B.score AND A.subId = 'ENG1';
INNER JOIN
PK-FK 사이에서 일어난다.
SELECT * FROM SubjectT A, ScoreT B;
SubjectT.subId 를 ScoreT.subId 에서 참조해서 쓰는 중이라고 한다면
SELECT * FROM SubjectT A, ScoreT B WHERE A.subId = B.subId;
PK-FK 사이에서 공통 데이터를 가지고 JOIN 해주었다.
Author And Source
이 문제에 관하여([211208] 교육 38일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@choiyezz/211208-교육-38일차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)