Growth ๐ŸŒณ/Practice ๐Ÿ’ป

[Leet code] 1193. Monthly Transactions I

์ธ” 2023. 9. 21. 18:31

๐Ÿ“ข ๋ณธ ํฌ์ŠคํŒ…์— ํ™œ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ๋ฌธ์ œ ๋ฐ ์ž๋ฃŒ ์ถœ์ฒ˜๋Š”

       ๋ฆฌํŠธ์ฝ”๋“œ Problems, https://leetcode.com/problemset/all/์ž„์„ ๋ฐํž™๋‹ˆ๋‹ค.


โœ” ๋ฌธ์ œ

https://leetcode.com/problems/monthly-transactions-i/description/

 

LeetCode - The World's Leading Online Programming Learning Platform

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

Table : Transactions

Write an SQL query to find for each month and country, the number of transactions and their total amount, the number of approved transactions and their total amount.

Return the result table in any order.

The query result format is in the following example.


โœ” ํ’€์ด

  ๋ฌธ์ œ ์š”๊ตฌ์‚ฌํ•ญ  

 

๊ฐ ์›”๊ณผ ๊ตญ๊ฐ€๋ณ„ ๊ฑฐ๋ž˜ ๊ฑด์ˆ˜์™€ ์ด์•ก, ์Šน์ธ๋œ ๊ฑฐ๋ž˜ ๊ฑด์ˆ˜์™€ ์ด์•ก์„ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค.

 

โ‘  ์›”๊ณผ ๊ตญ๊ฐ€์— ๋Œ€ํ•œ ๊ทธ๋ฃนํ•‘์ด ํ•„์š”ํ•˜๊ณ  - group by์ ˆ์— ์ ์šฉ

  -  ๊ธฐ์กด ํ…Œ์ด๋ธ”์˜ ๋‚ ์งœ ๋ฐ์ดํ„ฐ์ธ trans_date๋Š” ๋‚ ์งœ๊ฐ€ ์ผ๊นŒ์ง€ ๋‚˜์™€์žˆ์–ด date_format() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์›”๊นŒ์ง€ ์ „์ฒ˜๋ฆฌ

โ‘ก ์ „์ฒด ๊ฑฐ๋ž˜ ๊ฑด์ˆ˜์™€ ์ด์•ก์€ โ‘  ๊ทธ๋ฃนํ•‘ ์กฐ๊ฑด์— ๋”ฐ๋ฅธ ์ง‘๊ณ„๊ฐ€ ๋˜๋„๋ก COUNT, SUM ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

โ‘ข ์Šน์ธ๋œ ๊ฑฐ๋ž˜๊ฑด์ˆ˜(approved_count)๋Š” state ์ปฌ๋Ÿผ๊ฐ’์ด 'approved'์ธ ๊ฒฝ์šฐ์— ํ•œํ•ด์„œ ๊ฐ’์„ ์ง‘๊ณ„ํ•ด์•ผํ•˜๋ฏ€๋กœ CASE๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ 'approved'์ธ ๊ฒฝ์šฐ์— 1, ์•„๋‹Œ ๊ฒฝ์šฐ 0์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ณ  ํ•ฉ์„ ๊ตฌํ–ˆ๋‹ค.

โ‘ฃ ์Šน์ธ๋œ ๊ฑฐ๋ž˜์˜ ์ด์•ก(approved_total_amount) ๋˜ํ•œ CASE๋ฌธ์„ ์‚ฌ์šฉํ•˜๋˜, ํ•ด๋‹นํ•˜๋Š” ๊ธˆ์•ก๊ฐ’์˜ ํ•ฉ์„ ๊ตฌํ•˜๋ฉด ๋˜๋ฏ€๋กœ

     ์กฐ๊ฑด ์ถฉ์กฑ์‹œ ์ปฌ๋Ÿผ๊ฐ’์ธ 'amount' ๊ทธ๋Œ€๋กœ ๋ฏธ์ถฉ์กฑ์‹œ 0์œผ๋กœ CASE๋ฌธ์„ ์ž‘์„ฑํ–ˆ๋‹ค.

SELECT DATE_FORMAT(trans_date, '%Y-%m') AS month,
       country,
       COUNT(*) AS trans_count,
       SUM(CASE WHEN state = 'approved' THEN 1 ELSE 0 END) AS approved_count,
       SUM(amount) AS trans_total_amount,
       SUM(CASE WHEN state = 'approved' THEN amount ELSE 0 END) AS approved_total_amount
 FROM Transactions
 GROUP BY 1, 2

 

'Growth ๐ŸŒณ > Practice ๐Ÿ’ป' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

1907. Count Salary Categories  (0) 2023.09.24
[Leet code] 1341. Movie Rating  (1) 2023.09.22
[Leet code] 1174. Immediate Food Delivery II  (0) 2023.09.15
[Leet code] 1141. User Activity for the Past 30 Days IEasy474634  (0) 2023.09.13
[Leet code] 610. Triangle Judgement  (0) 2023.09.13