12/20 SQL 문제
SQL 문제: 카드 결제 내역 분석
문제 설명:
회사의 카드 결제 내역이 기록된 CARD_TRANSACTIONS
테이블이 있습니다. 이 테이블은 다음과 같은 스키마를 가지고 있습니다:
- employee_id: 사원 번호
- transaction_amount: 결제 금액 (환불된 경우 음수 값으로 표시됨)
- transaction_date: 거래 날짜
employee_id
별로 다음을 출력하는 SQL 쿼리를 작성하세요:
- 총 결제 금액 (환불은 절대값으로 계산)
- 총 환불 금액 (환불된 금액의 절대값)
예시 데이터:
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;
댓글남기기