[MYSQL]SQL 함수들 정리중

allnight5·2023년 7월 24일
0

RECURSIVE

// 공통 테이블 표현식(Common Table Expression, CTE)을
//사용하여 재귀적으로 시간대(HOURS) 테이블을 생성
//0부터 자기자신을 참조하며 23보다 작을때까지 반복

WITH RECURSIVE HOURS AS (
    SELECT 0 AS HOUR
    UNION ALL
    SELECT HOUR + 1 FROM HOURS WHERE HOUR < 23
)

ROUND

반올림이 필요할때 사용
소수점 2번째에서 반올림이 필요할때

ROUND(COUNT(DISTINCT O.USER_ID)/MAX(O.USER_ID), 1) 
AS PUCHASED_RATIO

소수점 4번째에서 반올림이 필요할때

ROUND(COUNT(DISTINCT O.USER_ID)/MAX(O.USER_ID), 3) 
AS PUCHASED_RATIO

COUNT

해당 열에 몇개의 내용이 있는지 확인할때 사용

COUNT(DISTINCT O.USER_ID) AS PUCHASED_USERS

MONTH, YEAR, DAY

HOUR, MINUTE, SECOND

YEAR(O.SALES_DATE) AS YEAR, //연도
MONTH(O.SALES_DATE) AS MONTH, // 월
DAY(O.SALES_DATE) AS DAY, // 날짜
HOUR(O.SALES_DATE) AS YEAR,  // 시
MINUTE(O.SALES_DATE) AS MONTH, // 분
SECOND(O.SALES_DATE) AS DAY  //초

만약 등록된것이 없다면 아래와 같이 형식에 맞추어
0으로 표시된다.

DATE_FORMAT

날짜의 형식을 바꾸거나 필요한 부분으로 맞추어 사용할때

DATE_FORMAT(reply.CREATED_DATE , '%Y-%m-%d') AS TODAY

where DATE_FORMAT(reply.CREATED_DATE,'%Y-%m') = '2022-10'

UNION

두 개 이상의 SELECT 문의 결과를 합치는 데 사용되는 SQL의 연산자로

두 개의 쿼리의 결과를 하나의 결과로 결합하는 역할을 합니다. UNION은 중복된 행은 제거하고 유일한 결과를 제공합니다.

SELECT FLAVOR
FROM 
    (SELECT *
    FROM FIRST_HALF
    UNION
    SELECT *
    FROM JULY) a
GROUP BY FLAVOR
ORDER BY SUM(TOTAL_ORDER) DESC 

두 쿼리의 결과를 UNION으로 결합하면 중복 행은 제거되고 두 쿼리의 결과가 하나로 합쳐진 결과가 반환되며 중복되지 않는 FLAVOR들에 대한 합쳐진 결과 중 상위 3개를 최종 결과를 얻게 됩니다.

SUM

SELECT TOTAL_ORDER FROM my_table;

하나씩 나올것이지만 전부나오지만

GROUP BY 로 FLAVOR을 지정하고 SUM을 할시

이렇게 두개로 합쳐져서 나온다.

profile
공부기록하기

1개의 댓글

comment-user-thumbnail
2023년 7월 24일

감사합니다. 이런 정보를 나눠주셔서 좋아요.

답글 달기