[MySQL] SUM(), AVG(), COUNT(), MIN() & MAX(), GROUP BY, ORDER BY

Lake·2024년 4월 9일
0

SQL

목록 보기
2/6
post-thumbnail

연산자 사용하기

+, -, *, / 사용 가능

예)

	SELECT food_preparation_time
           , delivery_time,
           , food_preparation_time + delivery_time as total_time
	FROM food_orders

합계(SUM)와 평균(AVG)

  • SUM(컬럼명)
  • AVG(컬럼명)

예)

	SELECT SUM(food_preparation_time) AS total_food_preparation_time
       	   , AVG(delivery_time) AS avg_food_preparation_time
	FROM food_orders

개수(COUNT)

  • COUNT(컬럼명)
    -> 컬럼명 대신 1 혹은 * 사용 가능

  • 몇 개의 값을 가지고 있는지 구할 때 :
    COUNT(DISTINCT 컬럼명)

예)

	SELECT COUNT(1) AS count_of_orders
           , COUNT(DISTINCT customer_id) AS count_of_customers
	FROM food_orders

최소(MIN) & 최대(MAX)

  • 최솟값 : MIN(컬럼)
  • 최댓값 : MAX(컬럼)

예)

	SELECT MIN(price) AS min_price
           , MAX(price) AS max_price
	FROM food_orders

범주 별 연산(GROUP BY)

종류별로 값을 구하기 위해 where 절을 사용해서 수십개의 쿼리를 작성하는 것은 비효율적이므로, Group by를 사용해서 여러번의 쿼리 없이 카테고리를 지정하여 연산한다.

SELECT 카테고리컬럼(컬럼)
       , SUM(계산 컬럼)
FROM
GROUP BY 카테고리컬럼(컬럼)

예) 음식 종류별 주문 금액 합계

	SELECT cuisine_type
           , SUM(price) AS sum_of_price
	FROM food_orders
	GROUP BY cuisine_type

정렬(ORDER BY)

	SELECT 카테고리컬럼(컬럼)
      	   , SUM(계산 컬럼)
	FROM
	GROUP BY 카테고리컬럼(컬럼)
	ORDER BY 정렬을 원하는 컬럼 (카테고리컬럼(컬럼), SUM(계산 컬럼) 둘 다 가능)

종류       구문   예시
오름차순  생략   ORDER BY SUM(price)
내림차순  DESC  ORDER BY SUM(price) DESC

예) 오름차순 정렬

	SELECT cuisine_type
      	   , SUM(price) AS sum_of_price
	FROM food_orders
	GROUP BY cuisine_type
	ORDER BY SUM(price)

예2) 내림차순 정렬

	SELECT restaurant_name
       	   , MAX(price) "최대 주문금액"
	FROM food_orders
	GROUP BY restaurant_name
	ORDER BY MAX(price) DESC

기본 구조 순서

SELECT
FROM
WHERE
GROUP BY
ORDER BY

오늘의 TMI

  • SQL에 대해서 구글링을 좀 하다보니까 사람들이 컴마 위치를 앞으로 빼서 쓰는 경우를 발견했다. 찾아보니까 정해진 표준같은 것은 없고, 각자 나름대로 쓰는 것 같다. 아직 까지는 내가 뭘 써야 할지 모르겠지만, 정하고 나면 하나의 방법으로 쭉 밀고 갈 생각이기는 하다.
    보니까 효율성의 문제랑 미관(?)의 문제로 많이들 이게 낫다 저게 낫다 얘기하던데, 나는 leading comma도 딱히 이상해 보이지는 않는다. 오히려 보기에는 좀 더 편한 느낌?(적어도 지금까지는 그렇다.)

    이에 관한 글:
    Leading with commas — ugly or efficient? An investigation over 320 GB of SQL code
    https://hoffa.medium.com/winning-arguments-with-data-leading-with-commas-in-sql-672b3b81eac9

    A Dispassionate Examination of the Empirical Evidence Regarding Positional Punctuation in SQL
    https://mode.com/blog/should-sql-queries-use-trailing-or-leading-commas

  • 컴마의 연장선으로 보니까 세미콜론 얘기도 있었다. 나는 지금까지 세미콜론을 안 쓰고는 했다. 이것도 찾아보니 단일 쿼리문일 때는 안 붙여도 된다고 했다. 근데 나중에 여러 쿼리문 수행할 때는 ;을 써서 구분을 해줘야 한다고 했다. 그럼 그냥 단일 쿼리문이어도 세미콜론 붙이는 습관을 들이는게 낫다 싶었다. 썼다 안 썻다 하는 것 보다는 C언어 할 때처럼 그냥 냅다 세미콜론 갈기는게 나을 것 같다.

0개의 댓글