1.4 조건에 따른 그룹

박재현·2022년 2월 26일
0
post-custom-banner

💬 GROUP BY - 조건에 따라 집계된 데이터를 가져옴

해당 테이블의 Column에서 겹치지 않게 데이터를 가져오기 ( Column에서 데이터 종류를 쉽게 파악할 수 있다 )

SELECT Country FROM Customers GROUP BY Country;

📌 Customers 테이블에서 Country 행에서 겹치지 않는 모든 데이터
-> Country 기준으로 같은 국가 끼리 묶은 데이터, 모든 국가들이 겹치지 않고 1개씩 나옴

SELECT CategoryID FROM Products
	GROUP BY CategoryID;

📌 Products 테이블에서 CategoryID 행에서 겹치지 않는 모든 데이터

SELECT 
  Country, City,
  CONCAT_WS(', ', City, Country)
FROM Customers
GROUP BY Country, City;

📌 Customers 테이블에서 Country와 City의 조합이 겹치지 않는 데이터


SELECT
  COUNT(*), OrderDate
	FROM Orders
	GROUP BY OrderDate;

📌 Orders 테이블에서 각 OrderDate가 겹치는 것들이 몇개인지 COUNT된 데이터
-> 각 날짜에 몇개의 주문이 있었는지 알 수 있음

SELECT
  ProductID,
  SUM(Quantity) AS QuantitySum
	FROM OrderDetails
	GROUP BY ProductID
	ORDER BY QuantitySum DESC;

📌 OrderDetails 테이블에서 ProductID의 값이 같은 것들을 그룹핑하고 그 을 내림차순으로 출력
-> 각 ProductId 총 갯수를 알수 있음

SELECT
  CategoryID,
  MAX(Price) AS MaxPrice, 
  MIN(Price) AS MinPrice,
  TRUNCATE((MAX(Price) + MIN(Price)) / 2, 2) AS MedianPrice,
  TRUNCATE(AVG(Price), 2) AS AveragePrice
	FROM Products
	GROUP BY CategoryID;

📌 Products 테이블에서 CategoryID를 그룹핑하고 각 ID에 대해 MAX, MIN, 중간값, 평균값 데이터를 출력

SELECT 
  CONCAT_WS(', ', City, Country) AS Location,
  COUNT(CustomerID)
	FROM Customers
	GROUP BY Country, City;

📌 Customers 테이블에서 Country, City가 겹치지 않는 값으로 그룹핑해 Location이라는 별칭으로 그 숫자를 카운트한 데이터


SELECT
  Country, COUNT(*)
	FROM Suppliers
	GROUP BY Country
	WITH ROLLUP;

📌 Suppliers 테이블에서 Country를 그룹핑해 겹치는 값을 COUNT하고 그 총합 데이터도 출력


💬 DISTINCT - 중복된 값들을 제거합니다.

  • GROUP BY 와 달리 집계함수가 사용되지 않습니다.
  • GROUP BY 와 달리 정렬하지 않으므로 더 빠릅니다.
SELECT DISTINCT CategoryID
FROM Products;
-- 위의 GROUP BY를 사용한 쿼리와 결과 비교

📌 Products테이블에서 categoryID가 데이터가 겹치지 않는 숫자 출력(정렬 되지 않은 채로)

SELECT DISTINCT Country
FROM Customers
ORDER BY Country;

📌 Customers테이블에서 Country가 겹치지 않도록 오름차순 출력

SELECT DISTINCT Country, City
FROM Customers
ORDER BY Country, City;

📌 Country, City가 겹치지 않도록 오름차순 출력

SELECT
  Country,
  COUNT(DISTINCT CITY)
FROM Customers
GROUP BY Country;

📌 Customers 테이블에서 Country를 그룹핑하고 그곳에서 CITY가 겹치지 않는 데이터를 카운트해서 출력

🙏🏻 출처: https://www.yalco.kr/@sql/1-5/

post-custom-banner

0개의 댓글