엑셀의 기본 집계 함수 (AVERAGE,SUM,COUNT,MAX,MIN 등)는 SQL에서 SELECT절 단독 사용이 가능하지만 , 조건에 맞는 집계값 (SUMIF, COUNTIF 등)을 가져오기 위한 SQL의 기능은 함수를 복합해서 사용 해야 한다.
아래 장표는 엑셀과 SQL의 비슷한(완전히 같지 않을 수도 있다) 기능을 모아 두었으니, 두개를 자주 사용하는 사람에게 큰 도움이 될 것이다.
엑셀 함수 | 설명 | 엑셀 예시 | MySQL 대응 함수 | MySQL 대응 쿼리 |
---|---|---|---|---|
SUM | 범위 내 숫자의 합계를 구하기 | =SUM(A1:A10) | SUM() | SELECT SUM(컬럼) FROM table_name; |
AVERAGE | 범위 내 숫자의 평균을 구하기 | =AVERAGE(A1:A10) | AVG() | SELECT AVG(컬럼) FROM table_name; |
MAX | 범위 내 숫자의 최대값을 구하기 | =MAX(A1:A10) | MAX() | SELECT MAX(컬럼) FROM table_name; |
MIN | 범위 내 숫자의 최소값을 구하기 | =MIN(A1:A10) | MIN() | SELECT MIN(컬럼) FROM table_name; |
COUNT | 범위 내 숫자 또는 항목의 개수를 구하기 | =COUNT(A1:A10) | COUNT() | SELECT COUNT(컬럼) FROM table_name; |
엑셀 함수 | 설명 | 엑셀 예시 | MySQL 대응 함수 | MySQL 대응 쿼리 | MySQL 예시 |
---|---|---|---|---|---|
IF | 조건에 따라 다른 값 반환 | =IF(A1 > 10, "크다", "작다") | IF() 또는 CASE WHEN | SELECT CASE WHEN A > 10 THEN '크다' ELSE '작다' END AS size FROM table_name; 또는 SELECT IF(A > 10, '크다', '작다') AS size FROM table_name; | SELECT CASE WHEN A > 10 THEN '크다' ELSE '작다' END AS size FROM employee_data; 또는 SELECT IF(A > 10, '크다', '작다') AS size FROM employee_data; |
SUMIF | 조건에 맞는 셀의 합계 구하기 | =SUMIF(A1:A10, ">10", B1:B10) | SUM(), IF() 또는 CASE WHEN | SELECT SUM(CASE WHEN A > 10 THEN B ELSE 0 END) FROM table_name; 또는 SELECT SUM(IF(A > 10, B, 0)) FROM table_name; | SELECT SUM(CASE WHEN A > 10 THEN B ELSE 0 END) AS total_sum FROM sales_data; 또는 SELECT SUM(IF(A > 10, B, 0)) AS total_sum FROM sales_data; |
COUNTIF | 조건에 맞는 셀의 개수 세기 | =COUNTIF(A1:A10, ">10") | COUNT(), IF() 또는 CASE WHEN | SELECT COUNT(CASE WHEN A > 10 THEN 1 END) FROM table_name; 또는 SELECT COUNT(IF(A > 10, 1, NULL)) FROM table_name; | SELECT COUNT(CASE WHEN A > 10 THEN 1 END) AS count FROM sales_data; 또는 SELECT COUNT(IF(A > 10, 1, NULL)) AS count FROM sales_data; |
AVERAGEIF | 조건에 맞는 셀의 평균 구하기 | =AVERAGEIF(A1:A10, ">10", B1:B10) | AVG(), IF() 또는 CASE WHEN | SELECT AVG(CASE WHEN A > 10 THEN B ELSE NULL END) FROM table_name; 또는 SELECT AVG(IF(A > 10, B, NULL)) FROM table_name; | SELECT AVG(CASE WHEN A > 10 THEN B ELSE NULL END) AS avg_value FROM sales_data; 또는 SELECT AVG(IF(A > 10, B, NULL)) AS avg_value FROM sales_data; |
VLOOKUP | 테이블에서 값 찾아 반환하기 | =VLOOKUP(A1, B1:C10, 2, FALSE) | JOIN | SELECT t1.A, t2.C FROM table1 t1 JOIN table2 t2 ON t1.A = t2.B; | SELECT t1.product_name, t2.category_name FROM products t1 JOIN categories t2 ON t1.category_id = t2.category_id; |
TEXT | 숫자나 날짜 형식 변환 | =TEXT(A1, "yyyy-mm-dd") | FORMAT(), DATE_FORMAT() | SELECT DATE_FORMAT(date_column, '%Y-%m-%d') AS formatted_date FROM table_name; | SELECT DATE_FORMAT(order_date, '%Y-%m-%d') AS formatted_date FROM orders; |