TECH

Postgres 데이터 필터링

AKA.DM 2022. 5. 16. 08:18
반응형
CREATE TABLE students(
	id INT,
	nickname VARCHAR(20),
	math_score INT,
	english_score INT,
	programming_socre INT
);

시작전에 필터링 실습에 필요한 테이블 생성을 한다.

 

id - 숫자

nickname - 문자 20 ....

 

테이블이 잘 만들어 졌는지 확인하자

SELECT * FROM students;

이렇게 비어있는 테이블이 잘 만들어진것이 확인된다.

 

이제 데이터를 넣는다.

INSERT INTO students(id, nickname, math_score, english_score, programming_socre)
VALUES
	(1, 'Sparkles', 98, 96, 93),
	(2, 'Soldier', 82, 66, 98),
	(3, 'Lapooheart', 84, 70, 82),
	(4, 'Slick', 87, 99, 98),
	(5, 'Smile', 75, 73, 70),
	(6, 'Jllyboo', 84, 82, 70),
	(7, 'Bagel', 97, 91, 87),
	(8, 'Queen', 99, 100, 88)
;

이거 할때 계속 오류 발생했다.

 

,를 잘 확인하자 

 

어찌어찌 넣은 후 이렇게 결과가 나온다.

 

모든 성정 90점 이상

SELECT * FROM students
WHERE 
	math_score >= 90 
	AND
	english_score >= 90
	AND
	programming_socre >= 90
;

여기서 *을 안넣으니 아무런 데이터가 나오지 않는다.

 

* 위치는 어떤 정보를 가져 올것인지를 주는 조건

 

아무튼 한놈 조회됨

 

75점 미만이 1이라도 있는 학생

SELECT * FROM students
WHERE 
	math_score < 75 
	OR
	english_score < 75
	OR
	programming_socre < 75
;

이렇게 나온다.

 

OR 조건을 썼다.

 

합산정보 표현

SELECT 
	*,
	math_score + english_score + programming_socre AS total
FROM 
	students ;

*, 후에 추가로 확인하고자 하는 컬럼을 계산하는 컬럼명을 입력하고 

AS 를 통해 별칭을 입력함

 

total이라는 새로운 컬럼이 보임

하지만 DB에 저장되는것이 아닌점 주의

 

학생별 정보와 평균정보

SELECT
	*, 
	(math_score + english_score + programming_socre)/3 AS avg
FROM 
	students;

마찬가지로 보고자하는 컬럼을 *, 에 넣어놓고 AS 를 통해 avg라는 별칭을 제공

 

총점이 270 이상인 학생 이름, 성정총점, 성적평균

SELECT 
	nickname,
	math_score + english_score + programming_socre AS total,
	(math_score + english_score + programming_socre)/3 AS avg
FROM students
WHERE
	math_score + english_score + programming_socre >= 270
;

여기서 WHERE 절에 total을 넣었더니 에러가는데

실제 존재하는 컬럼 값이 아니기 때문에 나오는 에러인듯

 

암튼 저리 수행 하면 아래와 같이 정상 조회 된다.

 

 

반응형