seoyeong200 / LeetCode

0 stars 0 forks source link

sql syntax #4

Open seoyeong200 opened 5 months ago

seoyeong200 commented 5 months ago

window function + over clause

window function

LEAD & LAG

LEAD, LAG : 행 기준 이전행/다음행 값 참조하기 LEAD(): 현재 행에서 지정한 오프셋만큼 '뒤'에 있는 행의 값을 반환

LEAD(column_name, offset, default_value) 
      OVER (PARTITION BY partition_column ORDER BY order_column)

LAG(): 현재 행에서 지정한 오프셋만큼 '앞'에 있는 행의 값을 반환

LAG(column_name, offset, default_value) 
        OVER (PARTITION BY partition_column ORDER BY order_column)
- offset: 뒤로 몇 번째 행의 값을 참조할지 지정 (기본값은 1)
- default_value: 참조할 값이 없는 경우 사용할 기본값 (기본값은 NULL)
- PARTITION BY: 윈도우를 나누는 기준

over clause

윈도우 함수는 OVER 구문과 함께 사용됩니다. OVER 구문은 윈도우를 정의하며, 다음과 같은 요소를 포함할 수 있습니다:

examples

각 employee의 sale_amount에 대해 고유 번호 매기기

SELECT 
    employee, 
    sale_amount, 
    ROW_NUMBER() OVER (PARTITION BY employee ORDER BY sale_amount) AS row_num
FROM sales;

각 employee의 누적 sale_amount 계산하기

SELECT 
    employee, 
    sale_amount, 
    SUM(sale_amount) OVER (PARTITION BY employee ORDER BY id) AS cumulative_sales
FROM sales;
seoyeong200 commented 5 months ago

user defined function

CREATE FUNCTION function_name (parameter_list) # parameter_list에 이름, 데이터 타입 지정해야 한다.
RETURNS return_type
BEGIN
    -- 함수 본문
    DECLARE variable_name datatype;

    -- SQL 문
    -- 변수 선언, 조건문, 반복문 등을 포함할 수 있습니다.

    RETURN return_value;
END;

example

# sum two numbers
CREATE FUNCTION add_numbers (a INT, b INT)
RETURNS INT
BEGIN
    DECLARE sum INT;
    SET sum = a + b;
    RETURN sum;
END;
# check given num is positive or negative or 0
CREATE FUNCTION check_number (num INT)
RETURNS VARCHAR(10)
BEGIN
    DECLARE result VARCHAR(10);

    IF num > 0 THEN
        SET result = 'Positive';
    ELSEIF num < 0 THEN
        SET result = 'Negative';
    ELSE
        SET result = 'Zero';
    END IF;

    RETURN result;
END;
seoyeong200 commented 5 months ago

어라? (뿌듯

Screenshot 2024-06-05 at 2 37 13 PM
seoyeong200 commented 1 month ago

union vs union all

UNION 중복 제거: UNION은 기본적으로 결과에서 중복된 행들을 제거합니다. 동일한 값이 여러 번 나타나면 한 번만 출력됩니다.

UNION ALL 중복 허용: UNION ALL은 중복된 행들을 제거하지 않고, 모든 결과를 그대로 반환합니다. 즉, 중복된 행들도 결과 집합에 포함됩니다.