1 분 소요

SQL 문제: 카드 결제 내역 분석

문제 설명: 회사의 카드 결제 내역이 기록된 CARD_TRANSACTIONS 테이블이 있습니다. 이 테이블은 다음과 같은 스키마를 가지고 있습니다:

  • employee_id: 사원 번호
  • transaction_amount: 결제 금액 (환불된 경우 음수 값으로 표시됨)
  • transaction_date: 거래 날짜

employee_id별로 다음을 출력하는 SQL 쿼리를 작성하세요:

  1. 총 결제 금액 (환불은 절대값으로 계산)
  2. 총 환불 금액 (환불된 금액의 절대값)

예시 데이터:

employee_id transaction_amount transaction_date
101 1000 2024-12-01
102 -200 2024-12-02
101 -300 2024-12-03
102 500 2024-12-04

예상 출력:

employee_id total_spent total_refunded
101 1300 300
102 700 200
SELECT EMPLOYEE_ID,
		SUM(TRANSACTION_AMOUNT) AS TOTAL_SPENT,
		SUM(CASE WHEN TRANSACTION_AMOUNT < 0 THEN ABS(TRANSACTION_AMOUNT) ELSE 0 END) AS TOTAL_REFUNDED
FROM CARD_TRANSACTIONS
GROUP BY EMPLOYEE_ID;

동명 동물 수 찾기

-- 코드를 입력하세요
SELECT NAME, COUNT(*) AS 'COUNT'
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(NAME) >= 2
ORDER BY NAME;

HAVING 절에서 COUNT(*)로 쓰면 이름이 NULL인 경우도 포함되므로 COUNT(NAME)으로 써야 한다.

년, 월, 성별 별 상품 구매 회원 수 구하기

년, 월, 성별 별로 상품을 구매한 회원 수를 집계

=> 년, 월, 성별로 GROUPING한다

성별이 NULL인 경우 집계에서 제외

SELECT YEAR(O.SALES_DATE) AS YEAR,
		MONTH(O.SALES_DATE) AS MONTH,
		U.GENDER,
		COUNT(DISTINCT U.USER_ID) AS USERS
FROM USER_INFO U
JOIN ONLINE_SALE O
ON U.USER_ID = O.USER_ID
WHERE U.GENDER IS NOT NULL
GROUP BY YEAR(O.SALES_DATE), MONTH(O.SALES_DATE), U.GENDER
ORDER BY YEAR(O.SALES_DATE), MONTH(O.SALES_DATE), U.GENDER;

댓글남기기