အားလုံးပဲ မင်္ဂလာပါ။ ဒီနေ့ Day 29 အတွက်ကတော့ Leetcode ရဲ့ difficulties Medium level problem တစ်ပုဒ်ဖြစ်တဲ့ 1164. Product Price at a Given Date ဆိုတဲ့ problem ကို ရွေးချယ်ထားပါတယ်။ ဒီပုစ္ဆာ မှာတော့ Products ဆိုတဲ့ table လေးကိုပေးထားပါတယ်။
1Table: Products2 3+---------------+---------+4| Column Name | Type |5+---------------+---------+6| product_id | int |7| new_price | int |8| change_date | date |9+---------------+---------+10(product_id, change_date) is the primary key (combination of columns with unique values) of this table.11Each row of this table indicates that the price of some product was changed to a new price at some date.12Initially, all products have price 10.13 14Write a solution to find the prices of all products on the date 2019-08-16.15 16Return the result table in any order.17 18The result format is in the following example.ကျွန်တော်တို့လုပ်ပေးဖို့လိုတာကတော့ product တစ်ခု ချင်းစီရဲ့ "2019-08-16" ရက်နေ့မှာရှိတဲ့ price ကိုရှာပေးရမှာပဲဖြစ်ပါတယ်။ မရှိရင်တော့ 16 ရက်နေ့ထက်ငယ်တဲ့ အနီးစပ်ဆုံး date ရဲ့ price ကိုရှာပေးရမှာဖြစ်ပါတယ်။ product တွေရဲ့ initial value က 10 ဖြစ်တယ်လို့လည်းပြောထားပါတယ်။
1Example 1:2 3Input: 4Products table:5+------------+-----------+-------------+6| product_id | new_price | change_date |7+------------+-----------+-------------+8| 1 | 20 | 2019-08-14 |9| 2 | 50 | 2019-08-14 |10| 1 | 30 | 2019-08-15 |11| 1 | 35 | 2019-08-16 |12| 2 | 65 | 2019-08-17 |13| 3 | 20 | 2019-08-18 |14+------------+-----------+-------------+15Output: 16+------------+-------+17| product_id | price |18+------------+-------+19| 2 | 50 |20| 1 | 35 |21| 3 | 10 |22+------------+-------+23 Example မှာဆို ရင် product id 1 က record သုံးခု ရှိပြီး 2019-08-16 ရက်နေ့မှာတော့ 35 ဖြစ်လို့ price က 35 ဖြစ်ပါတယ်။ product id 2 မှာဆိုရင်တော့ 14 ရက်နဲ့ 17 ရက်နေ့ပဲရှိပြီး 16 ရက်နေ့မပါတော့ 16 ရက်ထက်ငယ်တဲ့ 14 ရက်နေ့ value ဖြစ်တဲ့ 50 ကို ယူလိုက်ပါတယ်။ id 3 မှာဆိုရင် 18 ရက်နေ့တစ်ရက်ထဲ ရှိတော့ initial price ဖြစ်တဲ့ 10 ပဲဖြစ်သွားပါတယ်။ ကျွန်တော်ကတော့အောက်ပါအတိုင်းရေးဖြစ်ခဲ့ပါတယ်။
1**SQL**2 3SELECT p.product_id, 4IFNULL(5 (SELECT new_price FROM Products 6 WHERE product_id = p.product_id7 AND change_date <= "2019-08-16"8 ORDER BY change_date DESC LIMIT 19 ),10 1011) AS price12FROM Products p GROUP BY p.product_id;Product တစ်ခုချင်းစီဖို့ ရှာပေးရမှာဖြစ်လို့ ကျွန်တော်ကတော့ product id နဲ့ Group By လုပ်ပေးလိုက်ပါတယ်။ price ရှာဖို့ဆိုရင်တော့ IFNULL function လေးသုံးထားပါတယ်။ ရှေ့က value က null ဖြစ်ရင် နောက်က value ယူသုံးအောင်ပဲဖြစ်ပါတယ်။ ကျွန်တော်တို့လိုချင်တဲ့အတိုင်း 2019-08-16 ရက်နေ့ ဒါမှမဟုတ်သူ့ထက်ငယ်တဲ့ date က price တွေကို ရှာပြီး date အလိုက် DESC စီပြီး တစ်ခုပဲလိုချင်တော့ LIMIT 1နဲ့ ရေးထားလိုက်ပါတယ်။ အကယ်လို့ null ဖြစ်ခဲ့ရင်တော့ initial value ဖြစ်တဲ့ 10ကို ပြန်ပေးလိုက်တာပဲဖြစ်ပါတယ်။ ဒါဆိုရင်တော့ လိုချင်တဲ့ အဖြေလေးရရှိသွားပြီပဲဖြစ်ပါတယ်ဗျာ။
Video ကိုတော့အောက်က YouTube link လေးကနေတစ်ဆင့်ဝင်ကြည့်နိုင်ပါတယ်ဗျာ။ Stay safe and see you allပါဗျာ။
30 Days Of LeetCode Database Day 29 - 1164. Product Price at a Given Date
Watch on YouTubeDiscussion
Join the conversation
How do you feel about this article?
Comments
Sign in to join the conversation
Sign in to be the first to comment!
Share Your Article
Share with your professional network
Recent Articles

AWS - Application Load Balancer
Elastic Load Balancing (ELB) ELB ဆိုတာကတော့ request တွေကို တစ်နေရာတည်းမှ လက်ခံကာ Amazon EC2 instances၊ containers, etc.....

Terraform Day 3: Benefits of Terraform State
Terraform ကိုလေ့လာ တဲ့အခါ ကျွန််တော်တို့ရဲ့ Project Folder ထဲမှာ terraform.tfstate ဆိုတဲ့ ဖိုင်လေးကို တွေ့ဖူးကြပါလိမ့်မယ...

Terraform Day 2: Essential IaC Principles You Must Know
မနေ့ကတော့ Terraform အကြောင်း အကြမ်းဖျင်း Concept ကို ပြောပြခဲ့ပြီးပြီဆိုတော့ ဒီနေ့မှာတော့ Terraform ကို Professional ကျက...

TCP/IP Protocol
အားလုံးပဲမင်္ဂလာပါ။ ဒီနေ့ ကျွန်တော်တို့ TCP/IP Protocol အကြောင်း ဆွေးနွေးသွားပါမယ်။ ပထမဆုံးအနေနဲ့ TCP/IP ရဲ့ History လေး...

Terraform Day 1: Introduction to IAC and Terraform
ကျွန်တော်တို့ cloud အကြောင်း စပြောကြပြီဆိုရင် အရင်ဆုံး ခေါင်းထဲရောက်လာတာ Console ထဲဝင်၊ UI ကနေ ခလုတ်လေးတွေ လိုက်နှိပ်ပြီ...


