๐ ์ค๋์ ํ์ต
๊ณ ๊ฐ ๋ถ์
1๏ธโฃ ๊ตญ๊ฐ ๋ณ ๊ณ ๊ฐ ์, ๋์ ํฉ๊ณ
2๏ธโฃ ๊ตญ๊ฐ ๋ณ ๊ณ ๊ฐ ์ , ๊ตฌ์ฑ๋น, ๋์ ๋น
3๏ธโฃ ๊ตฌ๋งค ์ด๋ ฅ์ด ์๋ ๊ณ ๊ฐ
๐ 1๏ธโฃ ๊ตญ๊ฐ ๋ณ ๊ณ ๊ฐ ์, ๋์ ํฉ๊ณ ๐
select *, sum("๊ณ ๊ฐ ์") over (order by "๊ณ ๊ฐ ์" desc, country)
from (
select c.country , count(c.customer_id) as "๊ณ ๊ฐ ์"
from customers c
group by c.country
order by "๊ณ ๊ฐ ์" desc
) a;
๐ 2๏ธโฃ ๊ตญ๊ฐ ๋ณ ๊ณ ๊ฐ ์, ๊ตฌ์ฑ๋น, ๋์ ๋น ๐
-- ๋์ ๊ตฌ์ฑ๋น
select *
, sum("๊ตฌ์ฑ๋น") over (order by "๊ณ ๊ฐ ์" desc, country) as "๋์ ๊ตฌ์ฑ๋น"
from (
-- ๊ตฌ์ฑ๋น
select *
, "๊ณ ๊ฐ ์" / sum("๊ณ ๊ฐ ์") over() * 100 as "๊ตฌ์ฑ๋น"
from (
-- ๊ณ ๊ฐ ์
select c.country , count(c.customer_id) as "๊ณ ๊ฐ ์"
from customers c
group by c.country
order by "๊ณ ๊ฐ ์" desc
) a
) b;
๐ 3๏ธโฃ ๊ตฌ๋งค ์ด๋ ฅ์ด ์๋ ๊ณ ๊ฐ ๐
-- left join ์ด์ฉ
select c.customer_id , c.company_name , o.*
from customers c left join orders o on c.customer_id = o.customer_id
where o.order_id is null ;
-- ์ฐจ์งํฉ ์ด์ฉ
(select c.customer_id , c.company_name
from customers c)
except
(select distinct c.customer_id , c.company_name
from customers c join orders o on c.customer_id = o.customer_id) ;
๊ณ ๊ฐ ๊ตฌ๋งค์งํ ๋ถ์
1๏ธโฃ ๊ตญ๊ฐ ๋ณ ๋ถ์
2๏ธโฃ ์ง์ญ ๋ณ ๋ถ์
3๏ธโฃ ๊ณ ๊ฐ ๋ณ ๋ถ์
๐ ๊ธฐ๋ณธ ํ
์ด๋ธ ๋ง๋ค๊ธฐ ๐
-- customers : coustomer_id, company_name, cantact_title, country, city
-- orders : order_id, order_date, tear, month, day, quarter
-- order_details : product_id, unit_price, quantity, discount
-- products : product_name
-- categories : category_id, category_name
with cte_customers as (
select c.customer_id , c.company_name , c.contact_title , c.country , c.city
, o.order_id , o.order_date
, to_char(o.order_date, 'YYYY') as year
, to_char(o.order_date, 'mm') as month
, to_char(o.order_date, 'dd') as day
, to_char(o.order_date, 'q') as quarter
, od.product_id , od.unit_price , od.quantity , od.discount
, od.unit_price * od.quantity * (1-od.discount) as amount
, p.product_name
, c2.category_id , c2.category_name
from customers c , orders o , order_details od , products p , categories c2
where c.customer_id = o.customer_id
and o.order_id = od.order_id
and od.product_id = p.product_id
and p.category_id = c2.category_id
)
select *
from cte_customers;
๐ 1๏ธโฃ ๊ตญ๊ฐ๋ณ ๊ณ ๊ฐ์, ๋งค์ถ์ก, ์ฃผ๋ฌธ๊ฑด์ ์๊ด๊ณ์ ๐
-- customers : coustomer_id, company_name, cantact_title, country, city
-- orders : order_id, order_date, tear, month, day, quarter
-- order_details : product_id, unit_price, quantity, discount
-- products : product_name
-- categories : category_id, category_name
with cte_customers as (
select c.customer_id , c.company_name , c.contact_title , c.country , c.city
, o.order_id , o.order_date
, to_char(o.order_date, 'YYYY') as year
, to_char(o.order_date, 'mm') as month
, to_char(o.order_date, 'dd') as day
, to_char(o.order_date, 'q') as quarter
, od.product_id , od.unit_price , od.quantity , od.discount
, od.unit_price * od.quantity * (1-od.discount) as amount
, p.product_name
, c2.category_id , c2.category_name
from customers c , orders o , order_details od , products p , categories c2
where c.customer_id = o.customer_id
and o.order_id = od.order_id
and od.product_id = p.product_id
and p.category_id = c2.category_id
)
โ
๊ตญ๊ฐ ๋ณ ๊ณ ๊ฐ์, ๋งค์ถ์ก, ์ฃผ๋ฌธ๊ฑด์ : cte_country_customercnt_amount_ordercnt
, cte_country_customercnt_amount_ordercnt as (
select country, count(distinct customer_id ) as "๊ณ ๊ฐ์", sum(amount) as "๋งค์ถ์ก", count(distinct order_id) as "์ฃผ๋ฌธ๊ฑด์"
from cte_customers
group by country
)
โ
์๊ด๊ด๊ณ : cte_corr_customer_amount_ordercnt
, cte_corr_customer_amount_ordercnt as (
select corr(๊ณ ๊ฐ์, ๋งค์ถ์ก) as "๊ณ ๊ฐ์_๋งค์ถ์ก"
, corr(๋งค์ถ์ก, ์ฃผ๋ฌธ๊ฑด์) as "๋งค์ถ์ก_์ฃผ๋ฌธ๊ฑด์"
, corr(๊ณ ๊ฐ์, ์ฃผ๋ฌธ๊ฑด์) as "๊ณ ๊ฐ์_์ฃผ๋ฌธ๊ฑด์"
from cte_country_customercnt_amount_ordercnt
)
select *
from cte_corr_customer_amount_ordercnt;
๐ 2๏ธโฃ.1๏ธโฃ ์ง์ญ ๋ณ ๊ณ ๊ฐ์, ๋งค์ถ์ก, ์ฃผ๋ฌธ๊ฑด์ ๊ตฌ์ฑ๋น ๐
-- customers : coustomer_id, company_name, cantact_title, country, city
-- orders : order_id, order_date, tear, month, day, quarter
-- order_details : product_id, unit_price, quantity, discount
-- products : product_name
-- categories : category_id, category_name
with cte_customers as (
select c.customer_id , c.company_name , c.contact_title , c.country , c.city
, o.order_id , o.order_date
, to_char(o.order_date, 'YYYY') as year
, to_char(o.order_date, 'mm') as month
, to_char(o.order_date, 'dd') as day
, to_char(o.order_date, 'q') as quarter
, od.product_id , od.unit_price , od.quantity , od.discount
, od.unit_price * od.quantity * (1-od.discount) as amount
, p.product_name
, c2.category_id , c2.category_name
from customers c , orders o , order_details od , products p , categories c2
where c.customer_id = o.customer_id
and o.order_id = od.order_id
and od.product_id = p.product_id
and p.category_id = c2.category_id
)
โ
๊ตญ๊ฐ ๋ณ ๊ณ ๊ฐ์, ๋งค์ถ์ก, ์ฃผ๋ฌธ๊ฑด์ : cte_country_customercnt_amount_ordercnt
, cte_country_customercnt_amount_ordercnt as (
select country, count(distinct customer_id ) as "๊ณ ๊ฐ์", sum(amount) as "๋งค์ถ์ก", count(distinct order_id) as "์ฃผ๋ฌธ๊ฑด์"
from cte_customers
group by country
)
โ
์ง์ญ ์ปฌ๋ผ ์ถ๊ฐ : cte_country_group
, cte_country_group as (
select *
, case
when lower(country) in ('usa', 'canada', 'mexico') then 'NorthAmerica'
when lower(country) in ('brazil', 'venezuela', 'argentina') then 'SouthAmerica'
else 'Europe'
end "์ง์ญ"
from cte_country_customercnt_amount_ordercnt
)
โ
์ง์ญ ๋ณ ๊ณ ๊ฐ์, ๋งค์ถ์ก, ์ฃผ๋ฌธ๊ฑด์ : cte_country_group_customer_amount_ordercnt
, cte_country_group_customer_amount_ordercnt as (
select ์ง์ญ, sum(๊ณ ๊ฐ์) as ๊ณ ๊ฐ์ , sum(๋งค์ถ์ก) as ๋งค์ถ์ก , sum(์ฃผ๋ฌธ๊ฑด์) as ์ฃผ๋ฌธ๊ฑด์
from cte_country_group
group by ์ง์ญ
order by ์ง์ญ
)
โ
์ง์ญ ๋ณ ๊ณ ๊ฐ์, ๋งค์ถ์ก, ์ฃผ๋ฌธ๊ฑด์ ๊ตฌ์ฑ๋น : cte_country_group_ratio
, cte_country_group_ratio as (
select ์ง์ญ
, ๊ณ ๊ฐ์
, ๊ณ ๊ฐ์ / sum(๊ณ ๊ฐ์) over() * 100 as ๊ณ ๊ฐ์๊ตฌ์ฑ๋น
, ๋งค์ถ์ก
, ๋งค์ถ์ก / sum(๋งค์ถ์ก) over() * 100 as ๋งค์ถ์ก๊ตฌ์ฑ๋น
, ์ฃผ๋ฌธ๊ฑด์
, ์ฃผ๋ฌธ๊ฑด์ / sum(์ฃผ๋ฌธ๊ฑด์) over() * 100 as ์ฃผ๋ฌธ๊ฑด์๊ตฌ์ฑ๋น
from cte_country_group_customer_amount_ordercnt
)
select *
from cte_country_group_ratio;
๐ 2๏ธโฃ.2๏ธโฃ ์ง์ญ ๋ณ ํ๋งค๋ ์ ํ ์์ ๐
-- customers : coustomer_id, company_name, cantact_title, country, city
-- orders : order_id, order_date, tear, month, day, quarter
-- order_details : product_id, unit_price, quantity, discount
-- products : product_name
-- categories : category_id, category_name
with cte_customers as (
select c.customer_id , c.company_name , c.contact_title , c.country , c.city
, o.order_id , o.order_date
, to_char(o.order_date, 'YYYY') as year
, to_char(o.order_date, 'mm') as month
, to_char(o.order_date, 'dd') as day
, to_char(o.order_date, 'q') as quarter
, od.product_id , od.unit_price , od.quantity , od.discount
, od.unit_price * od.quantity * (1-od.discount) as amount
, p.product_name
, c2.category_id , c2.category_name
from customers c , orders o , order_details od , products p , categories c2
where c.customer_id = o.customer_id
and o.order_id = od.order_id
and od.product_id = p.product_id
and p.category_id = c2.category_id
)
โ
๊ตญ๊ฐ, ์นดํ
๊ณ ๋ฆฌ๋ช
, ์ ํID, ์ ํ๋ช
, ์๋, ์ง์ญ(ํ์์ปฌ๋ผ)
, cte_customer_product_sale as (
select country, category_name, product_id, product_name, quantity
, case
when lower(country) in ('usa', 'canada', 'mexico') then 'NorthAmerica'
when lower(country) in ('brazil', 'venezuela', 'argentina') then 'SouthAmerica'
else 'Europe'
end as "์ง์ญ"
from cte_customers
)
โ
์ง์ญ๋ณ ์ ํ ํ๋งค์๋
, cte_country_group_product_quantity as (
select ์ง์ญ, '[ '||category_name||'] '||product_name||'('||product_id::varchar(10)||')' as "์ ํ"
, sum(quantity) as ํ๋งค์๋
from cte_customer_product_sale
group by 1, 2
)
โ
์ง์ญ๋ณ ์ ํ ํ๋งค์๋ ์์
, cte_country_group_product_quantity_rank as (
select * , row_number() over(partition by ์ง์ญ order by ํ๋งค์๋ desc) as ์์
from cte_country_group_product_quantity
)
โ
์ง์ญ๋ณ ํ๋งค์์ ๋น๊ต(pivot)
, cte_country_group_product_quantity_rank_pivot as (
select ์์
, max(case when ์ง์ญ = 'NorthAmerica' then ์ ํ end) as NorthAmerica
, max(case when ์ง์ญ = 'SouthAmerica' then ์ ํ end) as SouthAmerica
, max(case when ์ง์ญ = 'Europe' then ์ ํ end) as Europe
from cte_country_group_product_quantity_rank
group by ์์
order by ์์
)
select *
from cte_country_group_product_quantity_rank_pivot;
๐ 3๏ธโฃ ๊ณ ๊ฐ๋ณ ๋ถ์ - ๊ธฐ๋ณธ ํ
์ด๋ธ ๋ง๋ค๊ธฐ ๐
-- customers : coustomer_id, company_name, cantact_title, country, city
-- orders : order_id, order_date, tear, month, day, quarter
-- order_details : product_id, unit_price, quantity, discount
-- products : product_name
-- categories : category_id, category_name
with cte_customers as (
select c.customer_id , c.company_name , c.contact_title , c.country , c.city
, o.order_id , o.order_date
, to_char(o.order_date, 'YYYY') as year
, to_char(o.order_date, 'mm') as month
, to_char(o.order_date, 'dd') as day
, to_char(o.order_date, 'q') as quarter
, od.product_id , od.unit_price , od.quantity , od.discount
, od.unit_price * od.quantity * (1-od.discount) as amount
, p.product_name
, c2.category_id , c2.category_name
from customers c , orders o , order_details od , products p , categories c2
where c.customer_id = o.customer_id
and o.order_id = od.order_id
and od.product_id = p.product_id
and p.category_id = c2.category_id
)
select customer_id
, count(distinct order_id) as ์ฃผ๋ฌธ๊ฑด์
, rank() over(order by count(order_id) desc) as ์ฃผ๋ฌธ๊ฑด์์์
, sum(amount) as ๋งค์ถ์ก
, rank() over(order by sum(amount) desc) as ๋งค์ถ์ก์์
, sum(amount) / count(distinct order_id) as ๊ฑด๋นํ๊ท ์ฃผ๋ฌธ์ก
, rank() over(order by sum(amount) / count(distinct order_id) desc) as ๊ฑด๋นํ๊ท ์ฃผ๋ฌธ์ก์์
from cte_customers
group by customer_id
order by ๋งค์ถ์ก desc;
Decil ๋ถ์
๋ฐ์ดํฐ๋ฅผ 10๋จ๊ณ๋ก ๋ถํ ํ์ฌ ์ค์๋๋ฅผ ํ์ ํ๋ ๋ฐฉ๋ฒ
๐ decil ๋ถ์ ๐
-- customers : coustomer_id
-- order_details : amount
with cte_customers as (
select c.customer_id
, od.unit_price * od.quantity * (1-od.discount) as amount
from customers c , orders o , order_details od
where c.customer_id = o.customer_id
and o.order_id = od.order_id
)
โ
๋งค์ถ์ก ๊ธฐ์ค์ผ๋ก ์์๋ถํฐ 10%์ฉ ๋๋์ด 10๊ฐ์ ๊ทธ๋ฃน ํ ๋น
, cte_customer_info as (
select customer_id
, sum(amount) as ๋งค์ถ์ก
, ntile(10) over(order by sum(amount) desc) as decil
from cte_customers
group by customer_id
)
โ
decil ๋ณ ๋งค์ถํฉ๊ณ
, cte_decil_group as (
select decil, sum(๋งค์ถ์ก) as decil_sum_amount
from cte_customer_info
group by decil
)
โ
decil ๋ณ ๊ตฌ์ฑ๋น
, cte_decil_ratio as (
select *
, sum(decil_sum_amount) over () as total
, decil_sum_amount / sum(decil_sum_amount) over () * 100 as decil_sum_amount_rate
from cte_decil_group
)
โ
decil ๋ณ ๊ตฌ์ฑ๋น ๋๊ณ
, cte_decil_agg as (
select *
, sum(decil_sum_amount_rate) over (order by decil) as cumsum
from cte_decil_ratio
order by decil
)
select *
from cte_decil_agg ;
Decil ๋ถ์์ ๋จ์
โ๏ธ ํ ๋ฒ์ ๊ตฌ๋งค๋ก ๋น์ผ ๋ฌผ๊ฑด์ ๊ตฌ๋งคํ ์ฌ์ฉ์์ ์ ๊ธฐ์ ์ผ๋ก ์ ๋ ดํ ๋ฌผ๊ฑด์ ์ฌ๋ฌ๋ฒ ๊ตฌ๋งคํ ์ฌ์ฉ์๊ฐ ๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ํ์ ๋๋ ๋ฌธ์
โ๏ธ ๊ฒ์๊ธฐ๊ฐ์ด ๋๋ฌด ์ฅ๊ธฐ๊ฐ์ด๋ฉด ๊ณผ๊ฑฐ์๋ ์ฐ์๊ณ ๊ฐ์ด์์ด๋ ํ์ฌ๋ ๋ค๋ฅธ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ ํด๋จผ๊ณ ๊ฐ์ด ํฌํจ๋ ์ ์์
โ๏ธ ๊ฒ์๊ธฐ๊ฐ์ด ๋๋ฌด ๋จ๊ธฐ๊ฐ์ด๋ฉด ์ ๊ธฐ์ ์ผ๋ก ๊ตฌ๋งคํ๋ ์์ ๊ณ ๊ฐ๋ณด๋ค ํด๋น ๊ธฐ๊ฐ ๋์ ์ผ์์ ์ผ๋ก ๋ง์ด ๊ตฌ๋งคํ ์ฌ์ฉ์๊ฐ ์ฐ์๊ณ ๊ฐ์ผ๋ก ํฌํจ๋ ์ ์์
RFM ๋ถ์
โ๏ธ Recency : ์ผ๋ง๋ ์ต๊ทผ์ ๊ตฌ๋งคํ๋๊ฐ?
โ๏ธ Frequency : ์ผ๋ง๋ ๋น๋ฒํ๊ฒ ๊ตฌ๋งคํ๋๊ฐ?
โ๏ธ Monetary : ์ผ๋ง๋ ๋ง์ ๊ธ์ก์ ์ง๋ถํ๋๊ฐ?
· ๊ตฌ๋งค ๊ฐ๋ฅ์ฑ์ด ๋์ ๊ณ ๊ฐ์ ์๋ณํ๊ธฐ ์ํ ๋ฐ์ดํฐ ๋ถ์ ๋ฐฉ๋ฒ
· ๋ง์ผํ ์์ ์ฌ์ฉ์ ํฐ์ผํ ์ ์ํ ๋ฐฉ๋ฒ
โก๏ธ Decil ๋ถ์์ ๋จ์ ๋ณด์
๐ RFM ๋ถ์ ๐
-- customers : coustomer_id, company_name, cantact_title, country, city
-- orders : order_id, order_date, tear, month, day, quarter
-- order_details : product_id, unit_price, quantity, discount
-- products : product_name
-- categories : category_id, category_name
with cte_customers as (
select c.customer_id , c.company_name , c.contact_title , c.country , c.city
, o.order_id , o.order_date
, to_char(o.order_date, 'YYYY') as year
, to_char(o.order_date, 'mm') as month
, to_char(o.order_date, 'dd') as day
, to_char(o.order_date, 'q') as quarter
, od.product_id , od.unit_price , od.quantity , od.discount
, od.unit_price * od.quantity * (1-od.discount) as amount
, p.product_name
, c2.category_id , c2.category_name
from customers c , orders o , order_details od , products p , categories c2
where c.customer_id = o.customer_id
and o.order_id = od.order_id
and od.product_id = p.product_id
and p.category_id = c2.category_id
)
โ
๊ธฐ์ค์ผ ์ ์
, cte_customer_maxo as (
select *, max(order_date) over() as maxo
from cte_customers
)
โ
RFM ์ฐ์ถ
, cte_rfm as (
select customer_id
, max(maxo) - max(order_date) as Recency
, count(distinct order_id) as Frequency
, sum(amount) as Monetary
from cte_customer_maxo
group by customer_id
order by 2 , 3 desc, 4 desc
)
select *
from cte_rfm;
๐ ์ค๋์ ๊ณผ์
left joinํ ๊ธฐ๋ณธ ํ ์ด๋ธ์ ์ฌ์ฉํ์ฌ ๋ถ์
โฏ inner join์ผ๋ก ๋ง๋ ๊ธฐ๋ณธ ํ
์ด๋ธ
select c.customer_id , c.company_name , c.contact_title , c.country , c.city
, o.order_id , o.order_date
, to_char(o.order_date, 'YYYY') as year
, to_char(o.order_date, 'mm') as month
, to_char(o.order_date, 'dd') as day
, to_char(o.order_date, 'q') as quarter
, od.product_id , od.unit_price , od.quantity , od.discount
, od.unit_price * od.quantity * (1-od.discount) as amount
, p.product_name
, c2.category_id , c2.category_name
from customers c , orders o , order_details od , products p , categories c2
where c.customer_id = o.customer_id
and o.order_id = od.order_id
and od.product_id = p.product_id
and p.category_id = c2.category_id
โฉ left join์ผ๋ก ๋ํ๋ธ ๊ธฐ๋ณธ ํ
์ด๋ธ
select c.customer_id , c.company_name , c.contact_title , c.country , c.city
, o.order_id , o.order_date
, to_char(o.order_date, 'YYYY') as year
, to_char(o.order_date, 'mm') as month
, to_char(o.order_date, 'dd') as day
, to_char(o.order_date, 'q') as quarter
, od.product_id , od.unit_price , od.quantity , od.discount
, od.unit_price * od.quantity * (1-od.discount) as amount
, p.product_name
, c2.category_id , c2.category_name
from customers c
left join orders o on c.customer_id = o.customer_id
left join order_details od on o.order_id = od.order_id
left join products p on od.product_id = p.product_id
left join categories c2 on p.category_id = c2.category_id ;
๊ณ ๊ฐ๋ณ ABC ๋ถ์
๐ ๊ณ ๊ฐ๋ณ ABC ๋ถ์ ๐
-- customers : coustomer_id, company_name, cantact_title, country, city
-- orders : order_id, order_date, tear, month, day, quarter
-- order_details : product_id, unit_price, quantity, discount
-- products : product_name
-- categories : category_id, category_name
with cte_customers as (
select c.customer_id , c.company_name , c.contact_title , c.country , c.city
, o.order_id , o.order_date
, to_char(o.order_date, 'YYYY') as year
, to_char(o.order_date, 'mm') as month
, to_char(o.order_date, 'dd') as day
, to_char(o.order_date, 'q') as quarter
, od.product_id , od.unit_price , od.quantity , od.discount
, od.unit_price * od.quantity * (1-od.discount) as amount
, p.product_name
, c2.category_id , c2.category_name
from customers c , orders o , order_details od , products p , categories c2
where c.customer_id = o.customer_id
and o.order_id = od.order_id
and od.product_id = p.product_id
and p.category_id = c2.category_id
)
โ
๋งค์ถ์ก ์ฐ์ถ
, cte_customer_sales as (
select customer_id
, sum(amount) as ๋งค์ถ์ก
from cte_customers
group by customer_id
order by ๋งค์ถ์ก desc
)
โ
๊ตฌ์ฑ๋น ์ฐ์ถ
, cte_customer_ratio as (
select *
, ๋งค์ถ์ก / sum(๋งค์ถ์ก) over () * 100 as ๊ตฌ์ฑ๋น
from cte_customer_sales
)
โ
๊ตฌ์ฑ๋น ๋๊ณ ์ฐ์ถ
, cte_customer_agg as (
select *
, sum(๊ตฌ์ฑ๋น) over (order by ๊ตฌ์ฑ๋น desc) as ๊ตฌ์ฑ๋น๋๊ณ
from cte_customer_ratio
)
โ
๋ฑ๊ธ ์ฐ์ถ
, cte_class as (
select *
, case
when ๊ตฌ์ฑ๋น๋๊ณ <= 70 then 'A'
when ๊ตฌ์ฑ๋น๋๊ณ <= 90 then 'B'
else 'C'
end as ๋ฑ๊ธ
from cte_customer_agg
order by ๊ตฌ์ฑ๋น desc
)
select *
from cte_class;
'STARTERS 4๊ธฐ > [STARTERS] TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[STARTERS 4๊ธฐ TIL] #52์ผ์ฐจ(23.04.19) (0) | 2023.04.23 |
---|---|
[STARTERS 4๊ธฐ TIL] #51์ผ์ฐจ(23.04.18) (0) | 2023.04.18 |
[STARTERS 4๊ธฐ TIL] #49์ผ์ฐจ(23.04.14) (0) | 2023.04.14 |
[STARTERS 4๊ธฐ TIL] #48์ผ์ฐจ(23.04.13) (0) | 2023.04.13 |
[STARTERS 4๊ธฐ TIL] #47์ผ์ฐจ(23.04.12) (0) | 2023.04.13 |