Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발자공부일기

2024-10-18 본문

TIL(Today I Learned)

2024-10-18

JavaCPP 2024. 10. 18. 17:23

조회한 데이터에 아무 값이 없다면 어떻게 해야할까?

Mysql 에서는 사용할 수 없는 값일 때 해당 값을 연산에서 제외해줍니다.

=> 0으로 간주 => 평균값 계산시 원치않는 값이 나올 수 있음

그래서 IS NOT NULLNULL이 아닌 값들만 포함하게 한다.

SELECT name,
       email
FROM users
WHERE email IS NOT NULL

 이 쿼리는 users 테이블에서 email 열에 값이 있는 사용자들만 조회합니다.

이메일이 NULL인 행은 결과에서 제외됩니다.

IS NOT NULL이 유용한 상황

  • 필수 데이터를 필터링할 때: 특정 컬럼이 반드시 값을 가져야 하는 경우에 유용합니다.
  • 데이터 정합성 검사: NULL 값을 허용하지 않는 컬럼이나, 잘못된 데이터가 입력된 경우를 걸러낼 수 있습니다.

주의할 점

  • NULL은 알 수 없는 값이기 때문에, NULL과의 직접 비교는 불가능합니다. 예를 들어, 다음과 같은 조건은 올바르게 작동하지 않습니다
WHERE column_name != NULL
 -- 잘못된 조건

이 대신 반드시 IS NOT NULL 또는 IS NULL을 사용해야 합니다.

 

 

Pivot Table

Pivot table 이란? : 2개 이상의 기준으로 데이터를 집계할 때, 보기 쉽게 배열하여 보여주는 것을 의미합니다.

 

Product Month Sales
A January 100
A February 150
B January 200
B February 250

이 데이터를 월별 제품 판매 보고서로 변환하고 싶다면, Pivot 테이블을 사용할 수 있습니다.

SELECT Product, 
       SUM(CASE WHEN Month = 'January' THEN Sales END) AS January,
       SUM(CASE WHEN Month = 'February' THEN Sales END) AS February
FROM sales
GROUP BY Product

 

결과:

 

Product January February
A 100 150
B 200 250

 

 

업무 시작을 단축시켜 주는 마법의 문법 (Window Function - RANK, SUM)

Window Function 의 기본 구조

WINDOW_FUNCTION(argument) OVER (PARTITION BY 그룹 기준 컬럼 ORDER BY 정렬 기준)

window_function : 기능 명을 사용해줍니다. (sum, avg 와 같이 기능명이 있습니다)

argument : 함수에 따라 작성하거나 생략합니다.

partition by : 그룹을 나누기 위한 기준입니다. group by 절과 유사하다고 생각해주시면 됩니다.

order by : window function 을 적용할 때 정렬 할 컬럼 기준을 적어줍니다.

window_function(argument) over (partition by 그룹 기준 컬럼 order by 정렬 기준)

 

1. SUM() 윈도우 함수

SUM() 윈도우 함수는 누적 합계를 계산하는 데 사용됩니다. 일반 SUM()과 달리, 윈도우 함수로 사용하면 현재 행과 이전 행들의 값을 기준으로 합계를 구할 수 있습니다.

SELECT name, department, salary, 
       SUM(salary) OVER (PARTITION BY department ORDER BY salary) AS running_total
FROM employees

 

결과:

name department salary running_total
Alice Sales 3000 3000
Bob Sales 5000 8000
Charlie Marketing 4000 4000
David Marketing 6000 10000

 

2. RANK() 윈도우 함수

RANK() 윈도우 함수는 각 행에 대해 순위를 매깁니다. 같은 값이 있을 경우 동일한 순위를 부여하며, 그 다음 순위는 건너뜁니다.

SELECT name, department, salary, 
       RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS salary_rank
FROM employees

 

결과:

name department salary salary_rank
Bob Sales 5000 1
Alice Sales 3000 2
David Marketing 6000 1
Charlie Marketing 4000 2

 

날짜 포맷 DATE_FORMAT()

 

DATE_FORMAT() 함수는 SQL에서 날짜 데이터를 특정 형식으로 변환하는 데 사용되는 함수입니다.

 

DATE_FORMAT(date, format)

 

  • date: 포맷을 적용할 날짜 또는 datetime 값.
  • format: 원하는 형식을 지정하는 문자열. 다양한 포맷 문자열을 사용하여 출력할 날짜의 형식을 정의할 수 있습니다.

포맷 문자열

DATE_FORMAT()에서 사용할 수 있는 주요 포맷 문자열은 다음과 같습니다:


포맷 설명 예시
%Y 4자리 연도 2024
%y 2자리 연도 24
%m 2자리 월 (01-12) 10
%b 약어 월 (Jan-Dec) Oct
%M 전체 월 이름 October
%d 2자리 일 (01-31) 18
%H 24시간 형식의 시 (00-23) 14
%i 분 (00-59) 30
%s 초 (00-59) 00
%W 주의 전체 이름 Thursday
%w 주의 번호 (0 = 일요일) 4

예제

기본적인 날짜 포맷 변경

SELECT DATE_FORMAT('2024-10-18', '%Y-%m-%d') AS formatted_date
#결과: 2024-10-18

 

다양한 형식으로 날짜 출력

SELECT DATE_FORMAT('2024-10-18 14:30:00', '%d/%m/%Y') AS formatted_date
#결과: 18/10/2024

 

월과 일 포함하여 표시

SELECT DATE_FORMAT('2024-10-18', '%M %d, %Y') AS formatted_date
#결과: October 18, 2024

 

시간 포함하여 표시

SELECT DATE_FORMAT('2024-10-18 14:30:00', '%Y-%m-%d %H:%i:%s') AS formatted_datetime
#결과: 2024-10-18 14:30:00

 

 

'TIL(Today I Learned)' 카테고리의 다른 글

2024-10-22  (0) 2024.10.22
2024-10-21  (0) 2024.10.21
2024-10-17  (0) 2024.10.17
2024-10-16  (0) 2024.10.16
2024-10-15  (0) 2024.10.15