본문 바로가기

Postgresql

퇴근 후 Postgresql - select 2편 (join, Group by)

반응형

2023.03.22 - [Postgresql] - 퇴근 후 Postgresql - select 1편

 

퇴근 후 Postgresql - select 1편

https://postgresql.kr/docs/9.5/tutorial-populate.html 처음에 DB를 왜 분리해야하는 이유 , 즉 본질 자체를 찾지 못한다면 프로그래밍하다가 DB연결해서 내가 원하는 값만 뽑아오고 싶다는 생각을 해보는게 정

jiain.tistory.com

 

https://postgresql.kr/docs/9.5/tutorial-join.html

 

테이블 조인

지금까지 하나의 쿼리에서 하나의 테이블만을 사용했었지요. 지금부터는 하나이상의 테이블 - 물론 정확히 말해서 테이블이 아닌 뷰가 될 수도 있고, SELECT 구문으로 만들어지는 특정 로우들일

postgresql.kr

SELECT *
    FROM weather LEFT OUTER JOIN cities ON (weather.city = cities.name);

     city      | temp_lo | temp_hi | prcp |    date    |     name      | location
---------------+---------+---------+------+------------+---------------+-----------
 Hayward       |      37 |      54 |      | 1994-11-29 |               |
 San Francisco |      46 |      50 | 0.25 | 1994-11-27 | San Francisco | (-194,53)
 San Francisco |      43 |      57 |    0 | 1994-11-29 | San Francisco | (-194,53)
(3 rows)

SELECT*FROM 테이블 1

LEFT OUTER JOIN 테이블 2

ON (조건);

왼쪽 테이블 1 나오고 오른쪽 테이블 2가 JOIN 즉 병합 된것을 알 수 있다.

 

SELECT *
    FROM weather w, cities c
    WHERE w.city = c.name;

매번 weather.temp 라고 칠 수 없을 것이다. 그래서 테이블 옆에 별칭을 사용해서 줄일 수 있다.

 

SELECT city, max(temp_lo)
    FROM weather
    GROUP BY city;

도시 중에서 최저 기온이 최고인 도시를 뽑을 때 쓰는 구문이랍니다.

예를 들어  엄마 친구 중에 공부 젤 잘하는 애 ,  내 친구들 중에 축구 젤 잘하는 애 뽑으라는 구문

 

총합, 최고 , 최저 이런걸 집계 함수라고 하는데 이때는 WHERE 절을 쓸 수 없다.

그래서 조건식에 HAVING 이라는 조건 절을 쓴다.

SELECT city, max(temp_lo)
    FROM weather
    WHERE city LIKE 'S%'(1)
    GROUP BY city
    HAVING max(temp_lo) < 40;

 

728x90

'Postgresql' 카테고리의 다른 글

퇴근 후 Postgresql - select 1편  (0) 2023.03.22