내일배움캠프/SQL

[PostgreSQL] ::, CASE_ type 변환

dydatablog 2025. 3. 12. 10:52

기본 구조

CASE (SQL 표준)

# 예시 1: 정수를 텍스트로 변환
SELECT CAST(1234 AS TEXT) AS converted_value;

# 예시 2: 소수를 정수로 변환
SELECT CAST(12.34 AS INTEGER) AS converted_value;

# 예시 3: 텍스트를 날짜로 변환
SELECT CAST('2025-03-12' AS DATE) AS converted_date;

# 예시 4: 텍스트를 정수로 변환
SELECT CAST('5678' AS INTEGER) AS converted_value;

# 예시 5: JSON 문자열을 JSON 객체로 변환
SELECT CAST('{"key": "value"}' AS JSON) AS json_object;

# 예시 6: 숫자를 소수로 변환
SELECT CAST(5 AS DECIMAL) AS converted_value;

:: (PostgreSQL)

# 예시 1: 정수를 텍스트로 변환
SELECT 1234::TEXT AS converted_value;

# 예시 2: 소수를 정수로 변환
SELECT 12.34::INTEGER AS converted_value;

# 예시 3: 텍스트를 날짜로 변환
SELECT '2025-03-12'::DATE AS converted_date;

# 예시 4: 텍스트를 정수로 변환
SELECT '5678'::INTEGER AS converted_value;

# 예시 5: JSON 문자열을 JSON 객체로 변환
SELECT '{"key": "value"}'::JSON AS json_object;

 

*** 나누기와 연산

## PostgreSQL에서의 나누기 연산
2/3 -- 0
CAST(2/3 AS NUERTIC) -- 0

## 문자열을 소수로 반환
2/3 ::DECIMAL -- 0.66666666666666666667

## 다른 방법
CAST(2 AS NUERTIC) / 3 -- 0.66666666666666666667
2./3 -- 0.66666666666666666667
2/3. -- 0.66666666666666666667

 

참고 : https://www.postgresql.org/docs/9.4/static/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS-GENERIC


[활용 문제]

https://datalemur.com/questions/signup-confirmation-rate

 

TikTok SQL Interview Question | DataLemur

TikTok SQL Interview Question: Write a query to calculate the signup activation rate.

datalemur.com

 

SELECT ROUND(SUM(cnt) / COUNT(cnt) :: DECIMAL ,2)
FROM(
SELECT *, 
  CASE WHEN signup_action = 'Confirmed' THEN 1 ELSE 0 END AS cnt
FROM emails e
JOIN texts t ON e.email_id = t.email_id ) AS sub