Growth ๐ŸŒณ/Practice ๐Ÿ’ป

[Leet code] 1141. User Activity for the Past 30 Days IEasy474634

์ธ” 2023. 9. 13. 15:55

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

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


โœ”๋ฌธ์ œ

https://leetcode.com/problems/user-activity-for-the-past-30-days-i/

 

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 : Activity

Write a solution to find the daily active user count for a period of 30 days ending 2019-07-27 inclusively. A user was active on someday if they made at least one activity on that day.

Return the result table in any order.

The result format is in the following example.


โœ” ํ’€์ด

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

 

< ํŠน์ด์‚ฌํ•ญ >

 - ์ค‘๋ณต๊ฐ’ ์žˆ์Œ.

 - (์ปฌ๋Ÿผ) activity๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ENUM์œผ๋กœ ์—ฌ๋Ÿฌ๊ฐ’ ์ค‘์— ํ—ˆ์šฉ๋œ ๊ฐ’๋งŒ ์ €์žฅ๋˜๊ฒŒ๋” ํ•œ๋‹ค.

 

2019-07-27 ์„ ํฌํ•จํ•˜์—ฌ 30์ผ ์ด๋‚ด์— ์ผ๋ณ„ ์ตœ์†Œ ํ•œ๊ฐ€์ง€ ํ™œ๋™์„ ํ•œ ์œ ์ €์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

session์€ ์œ ์ €๋‹น ๋ถ€์—ฌ๋˜๋Š” ๊ฐ’์ด๋ฏ€๋กœ ๋ณ„๋„๋กœ ๊ทธ๋ฃนํ•‘ ํ•ด์ค„ ํ•„์š”๊ฐ€ ์—†๋‹ค.

· ์œ ์ €์ˆ˜๋ฅผ ํŒŒ์•…ํ•˜๊ณ ์ž ํ•˜๋Š” '๊ธฐ๊ฐ„'

- 30์ผ ์ด๋‚ด์ด๋ฏ€๋กœ BETWEEN ~ AND ๋กœ DATE_ADD('๊ธฐ์ค€์ผ์ž', INTERVAL N DAY) ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

  ๊ธฐํƒ€ ๋‹ค๋ฅธ ๋‚ ์งœ ํ•จ์ˆ˜๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์ผ๋ณ„๋กœ ์นด์šดํŠธํ•ด์•ผํ•˜๋ฏ€๋กœ activity_date๋กœ ๊ทธ๋ฃนํ•‘ํ•ด์ฃผ๊ณ 

ํŠน์ • ์ผ์ž ๋‚ด์—์„œ๋„ ํ•œ ์œ ์ €๊ฐ€ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ™œ๋™์„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ id๋Š” DISTINCT(์ค‘๋ณต์ œ๊ฑฐ)๋ฅผ ์ ์šฉํ•ด์ฃผ์—ˆ๋‹ค.

SELECT activity_date AS day, COUNT(DISTINCT user_id) AS active_users
 FROM Activity
 WHERE activity_date BETWEEN DATE_ADD('2019-07-27', INTERVAL -29 DAY) AND '2019-07-27'
 GROUP BY activity_date