Database/MySQL

MySQL 조건에 따라 그룹 묶기

dev.Woody 2021. 11. 29. 23:57

MySQL If문

SELECT IF (1 > 2, '1는 2보다 크다.', '1은 2보다 작다.');

MySQL IFNULL문

IFNULL(A,B)은 A가 NULL일 시 B를 출력한다.

SELECT
  IFNULL('A', 'B'),
  IFNULL(NULL, 'B');

MySQL CASE문

SELECT
CASE
  WHEN -1 > 0 THEN '-1은 양수다.'
  WHEN -1 = 0 THEN '-1은 0이다.'
  ELSE '-1은 음수다.'
END;

MySQL 조건에 따라 집계된 값 받아오기

GROUP BY는 조건에 따라 집계된 값을 가져온다.

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

GROUP BY는 다음과 같이, 해당 GROUP별로의 개수를 측정할 수 있다.

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

GROUP BY를 통해서 다음과 같이 해당하는 위치에 값들을 셀 수 있다.

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

이 GROUP BY에서 WITH ROLLUP을 이용하면 전체의 집계값을 구할 수 있다. WITH ROLLUP을 이용하면, ORDER BY는 이용할 수 없다.

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

다음과 같이 마지막 행에 집계값이 나온다.