
SELECT [DISTINCT] 칼럼명 [ALIAS명]
FROM 테이블명
[WHERE 조건식]
[GROUP BY 칼럼이나 표현식]
[HAVING 그룹조건식] ;
CREATE TABLE pokemon (
pm_id NUMBER PRIMARY KEY NOT NULL,
name VARCHAR2(20) NOT NULL,
attr VARCHAR2(20) DEFAULT 'normal',
weight NUMBER
);
INSERT INTO pokemon VALUES (1, 'Bulbasaur', 'grass', 30);
INSERT INTO pokemon VALUES (2, 'Ivysaur', 'grass', 50);
INSERT INTO pokemon VALUES (3, 'Venusaur', 'grass', 150);
INSERT INTO pokemon VALUES (4, 'Charmander', 'Fire', 80);
INSERT INTO pokemon VALUES (5, 'Charmeleon', 'Fire', 200);
INSERT INTO pokemon VALUES (25, 'Pikachu', 'Electric', 15);
INSERT INTO pokemon (pm_id, name) VALUES (86, 'Seel');
-- 전체 데이터 먼저 확인하고 진행
SELECT * FROM pokemon;
-- 그룹 별로 평균 몸무게 조회
SELECT
attr,
AVG(weight)
FROM pokemon
GROUP BY attr;

SELECT [DISTINCT] 칼럼명 [ALIAS명]
FROM 테이블명
[WHERE 조건식]
[GROUP BY 칼럼이나 표현식]
[HAVING 그룹조건식] ;
CREATE TABLE pokemon (
pm_id NUMBER PRIMARY KEY NOT NULL,
name VARCHAR2(20) NOT NULL,
attr VARCHAR2(20),
weight VARCHAR2(20)
);
INSERT INTO pokemon VALUES (1, 'Bulbasaur', 'Grass', '30');
INSERT INTO pokemon VALUES (4, 'Charmander', 'Fire', '80');
INSERT INTO pokemon VALUES (25, 'Pikachu', 'Electric', '15');
INSERT INTO pokemon (pm_id, name) VALUES (54, 'Psyduck');
INSERT INTO pokemon (pm_id, name, attr) VALUES (76, 'Golem', 'Rock');
INSERT INTO pokemon (pm_id, name, weight) VALUES (86, 'Seel', '85');
-- Oracle
-- 1번과 2번 비교하기
-- attr 칼럼의 NULL 값 여부에 따른 차이
--1번
SELECT
attr,
AVG(weight)
FROM pokemon
GROUP BY attr
HAVING attr IS NOT NULL;
-- 2번
SELECT
attr,
AVG(weight)
FROM pokemon
GROUP BY attr
-- HAVING attr IS NOT NULL;
CREATE TABLE pokemon (
pm_id NUMBER PRIMARY KEY NOT NULL,
name VARCHAR2(20) NOT NULL,
attr VARCHAR2(20) DEFAULT 'normal',
height NUMBER
);
INSERT INTO pokemon VALUES (1, 'Bulbasaur', 'grass', 50);
INSERT INTO pokemon VALUES (2, 'Ivysaur', 'grass', 90);
INSERT INTO pokemon VALUES (3, 'Venusaur', 'grass', 250);
INSERT INTO pokemon VALUES (4, 'Charmander', 'Fire', 80);
INSERT INTO pokemon VALUES (5, 'Charmeleon', 'Fire', 120);
INSERT INTO pokemon VALUES (25, 'Pikachu', 'Electric', 50);
SELECT
name,
height
FROM pokemon
ORDER BY height DESC, name ASC;

5. SELECT 칼럼명 [ALIAS명] -- 5. 데이터의 값을 출력/계산
1. FROM 테이블명 -- 1. 발췌대상 테이블 참조
2. WHERE 조건식 -- 2. 발췌 대상 데이터가 아닌 것은 제거
3. GROUP BY 칼럼(Column)이나 표현식 -- 3. 행동들을 소그룹화
4. HAVING 그룹조건식 -- 4. 그룹핑된 값의 조건에 맞는 것만을 출력
6. ORDER BY 칼럼(Column)이나 표현식;-- 6. 데이터를 정렬
CREATE TABLE pokemon (
pm_id NUMBER PRIMARY KEY NOT NULL,
name VARCHAR2(20) NOT NULL,
attr VARCHAR2(20) DEFAULT 'normal',
height NUMBER
);
INSERT INTO pokemon VALUES (1, 'Bulbasaur', 'grass', 50);
INSERT INTO pokemon VALUES (2, 'Ivysaur', 'grass', 90);
INSERT INTO pokemon VALUES (3, 'Venusaur', 'grass', 250);
INSERT INTO pokemon VALUES (4, 'Charmander', 'Fire', 80);
INSERT INTO pokemon VALUES (5, 'Charmeleon', 'Fire', 120);
INSERT INTO pokemon VALUES (25, 'Pikachu', 'Electric', 50);
INSERT INTO pokemon VALUES (86, 'Seel', 'Ice', 80);
-- Oracle
SELECT
name,
attr,
height
FROM pokemon WHERE ROWNUM < 4 ORDER BY height, name;
SELECT TOP(2) WITH TIES ename, sal FROM emp ORDER BY sal DESC;
CREATE TABLE pokemon (
pm_id INT PRIMARY KEY NOT NULL,
name VARCHAR(20) NOT NULL,
attr VARCHAR(20) DEFAULT 'normal',
height INT
);
INSERT INTO pokemon VALUES (1, 'Bulbasaur', 'grass', 50);
INSERT INTO pokemon VALUES (2, 'Ivysaur', 'grass', 90);
INSERT INTO pokemon VALUES (3, 'Venusaur', 'grass', 250);
INSERT INTO pokemon VALUES (4, 'Charmander', 'Fire', 80);
INSERT INTO pokemon VALUES (5, 'Charmeleon', 'Fire', 120);
INSERT INTO pokemon VALUES (25, 'Pikachu', 'Electric', 50);
INSERT INTO pokemon VALUES (86, 'Seel', 'Ice', 80);
-- SQL Server
SELECT
TOP(3) WITH TIES
name, attr,
height
FROM pokemon ORDER BY height, name;