이동준1
아웃풋 공부
이동준1
전체 방문자
오늘
어제
  • 분류 전체보기 (84)
    • airflow (8)
    • sql (23)
    • aws (12)
    • python (3)
    • 네트워크 (12)
    • 알고리즘 (2)
    • 짧은서평 (24)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 네트워크
  • Network
  • 퓨처셀프
  • 유연함의힘
  • 고통의 비밀
  • 고통의비밀
  • AWS
  • regexp
  • 서평

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
이동준1
sql

[SQL] Aggregation Without Grouping

sql

[SQL] Aggregation Without Grouping

2023. 1. 4. 16:47

SQL에는 여러가지 집계함수가 있다. 집계함수는 그룹별로 값을 집계해준다. 이를 이용하면 회사 부서별로 평균 임금을 구해볼 수도있고, 학교 반별로 최소 성적을 구해볼수도 있다. 

 

그룹별로 집계를 하기 위해서는 쿼리를 아래와 같이 작성한다. group_name에서는 그룹화를 원하는 테이블의 필드가 들어간다. 그리고 value에는 집계를 원하는 값을 넣어주면 된다. 예시에는 그룹별 합(SUM)을 예시로 들었지만, SUM 대신 MIN이나 MAX, AVG 등도 사용할 수 있다.

SELECT group_name, SUM(value)
FROM table
GROUP BY group_name;

 

일반적으로는 위의 형태를 사용하지만, 집계함수는 GROUP BY문 없이도 사용할 수 있다. 그룹없이 어떻게 집계를 하냐고 할수도 있지만, 그룹화없이 집계를한다면 집계의 대상은 전체 테이블이 된다. GROUP BY 없이 집계함수를 사용하면 전체 테이블을 기준으로 합계, 최댓값, 최솟값, 그리고 평균을 구하게 된다.

 


더 깊은 이해를 위해 하나의 예시를 들어보자. 아래의 문제도 그룹화 없이 집계하는 문제이다.

 

https://www.hackerrank.com/challenges/weather-observation-station-13/problem?isFullScreen=true 

 

Weather Observation Station 13 | HackerRank

Query the sum of Northern Latitudes having values greater than 38.7880 and less than 137.2345, truncated to 4 decimal places.

www.hackerrank.com

 

Query the sum of Northern Latitudes (LAT_N) from STATION having values greater than 38.7880 and less than 137.2345. Truncate your answer to  decimal places.

 

문제에서는 38.7880보다 크고, 137.2345보다 작은 위도(LAT_N)를 추려 낸뒤에, 추려낸 위도의 총합을 구하길 원한다. 

 

쿼리는 아래와 같이 간단히 작성할 수 있지만, 아래 쿼리는 정확하게 이해하는것이 중요하다. 두가지 정도를 짚고 넘어가면 좋겠다.

SELECT TRUNCATE(SUM(lat_n), 4)
FROM station
WHERE lat_n > 38.7880 AND lat_n < 137.2345;

1) 위의 쿼리에서는 집계함수 SUM을 사용하지만, GROUP BY가 없다. 즉, 전체 테이블을 기준으로 집계를 하는 것이다.

 

2) 쿼리의 실행 순서는 FROM > WHERE > SELECT 이다. 그래서, 먼저 테이블에서 조건에 맞는 행들을 먼저 걸러낸다. 그리고 그 후에 필터링된 행들로 집계(SUM)을 진행한다. 

 

이렇게 집계함수 뿐만아니라, 쿼리의 실행순서에 대해 알고 문제를 풀어야 정확하게 문제를 풀었다고 할 수 있겠다.

'sql' 카테고리의 다른 글

[sql] 월 전체 매출액 대비 비율  (0) 2023.12.29
[sql] date_trunc  (0) 2023.12.28
[SQL][HackerRank] The Blunder  (0) 2023.01.03
[SQL][HackerRank] Binary Tree Nodes  (0) 2023.01.02
[SQL][HackerRank] Occupations  (0) 2022.12.27
    'sql' 카테고리의 다른 글
    • [sql] 월 전체 매출액 대비 비율
    • [sql] date_trunc
    • [SQL][HackerRank] The Blunder
    • [SQL][HackerRank] Binary Tree Nodes
    이동준1
    이동준1

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.