아... postgreSQL을 버릴까도 생각했는데,
강의 자체가 이걸로 진행되는걸 내가 어떻게 하냐..
그래서 혹시 몰라 지우고 다시 설치해봤다.
그랬더니 마찬가지로 처음 10쿼리정도는 쌩쌩하게 잘 돌아가더니
이후 쿼리부터는 진짜 대중이 없다. 오바 안하고
빠르면 2초 (매우 드뭄)
보통은 1분 30초쯤 (매우 잦음)
보통 다음 빈도로는 3분 이상... 하... (약간 잦음)
왜 이걸 쓰지? 싶기도 한데
postgreSQL이 ANSI 표준을 가장 잘지키는 오픈소스라 호환성이 좋다고 한다.
진짜 아.... 근데 왜 이렇게 느리며, 느린걸 잡을 만한 정보가 이리도 없다는게 이상하다 싶었다.
쿼리 느린거 관련해서 검색하면 어떻게 로그남기는지나 나오지
어디에 정확히 기입을 해야하는지에 대한 정보도 불분명하고
그 쿼리를 어떻게 확인하는지, 확인해서 어떻게 활용을 해야하는지도 안나온다
그냥 로그 남기는 것만 찾을 수있었다 여태까지는
암튼 하...
잡설은 여기까지하고
GROUP BY 시작!
# GROUP BY
SELECT category_col, AGG(data_col)
FROM table
GROUP BY category_col
이라고 할때
#1 AGG는 집계함수로써 sum, avg, min 등을 의미한다.
#2 AGG를 제외하고, SELECT에서 특정 컬럼을 선택해주었다면 해당 컬럼은 반드시
GROUP BY에서도 쓰여야 한다.
#3 GROUP BY에서는 필터링으로 HAVING을 사용한다. WHERE를 쓰면 안된다고 한다.
더 정확히는, 사용은 가능하지만 집계함수를 SELECT했을때 문제가 되는것같다.
예시1
회사별 총 판매액을 구한다.
SELECT company, SUM(sales)
FROM finance_table
GROUP BY company
ORDER BY SUM(sales)
물론 마지막의 ORDER BY는 순서를 정렬해주는 것이기 때문에 중요한 내용은 아니다.
# 예제
select customer_id, sum(amount) from payment
group by customer_id
order by sum(amount) DESC;
위와같이 집계함수를 select 해주게 되면
보통의 경우에는 order by 로 정리를 집계함수 기준으로 하는게 일반이다.
#문풀1
what is the average replacement cost per MPAA rating?
plus, use ROUND function for avoid many significant digits
answer
select ROUND(AVG(replacement_cost),2), rating
FROM film
group by rating
#문풀2
What are the customer ids of the top 5 customers by total spend?
answer
SELECT customer_id, ROUND(SUM(amount),2)
FROM payment
GROUP BY customer_id
ORDER BY SUM(amount) DESC
LIMIT 5
'개발일지 > SQL' 카테고리의 다른 글
SQL 기초23 JOIN 두번째 (아직 갈길이 멀다 JOIN은 특히 더) (0) | 2022.08.27 |
---|---|
SQL 기초 22 HAVING (GROUP BY와 셋트메뉴라고 보면 된다) (0) | 2022.08.25 |
SQL 기초20 집합연산자 UNION, UNION ALL, INTERSECT, EXISTS, ANY (0) | 2022.08.25 |
SQL 기초 19 뷰(view) (0) | 2022.08.25 |
SQL 기초 18 JOIN (0) | 2022.08.25 |