মডিউল পাঠ (2/4)
PARTITION BY এর সাথে গ্রুপিং
PARTITION BY এর সাথে গ্রুপিং
প্রতিটি সারিতে বিশ্বব্যাপী গণনা করা সহজ, কিন্তু প্রায়শই এটি যথেষ্ট নয়। প্রতিটি সারিতে মূল বিবরণ রেখে আমরা গড় প্রতি বিভাগ বা প্রতি গ্রাহক গণনা করতে চাই।
এখানেই PARTITION BY এর ভিতরে OVER(...) ধারাটি আসে৷
কিভাবে PARTITION BY কাজ করে
ধারণাগতভাবে এটি GROUP BY এর মতোই আচরণ করে, কিন্তু ফলাফলে সারি ভেঙে ফেলার পরিবর্তে, এটি শুধুমাত্র ডেটার "উইন্ডো" এর সীমানা নির্ধারণ করে যার উপর ফাংশনটি একক সারির ফলাফল গণনা করতে কাজ করবে।
SELECT
product_name,
category_id,
price,
AVG(price) OVER(PARTITION BY category_id) AS cat_avg_price
FROM products;প্রতিটি পণ্য সারি তার নিজস্ব বিবরণ রাখে, এবং cat_avg_price কলামটি তার একই বিভাগে থাকা পণ্যগুলির গড় _সীমাবদ্ধ দেখাবে।
'পণ্য' টেবিল থেকে, 'id', 'category_id' এবং 'price' বের করুন। উইন্ডো ফাংশন ব্যবহার করে প্রতিটি 'category_id'-এর জন্য 'মূল্য'-এর যোগফল গণনা করে একটি 'শ্রেণী_মোট' কলাম যোগ করুন।
ইঙ্গিত দেখান
SUM(মূল্য) OVER(partiTION by category_id) ব্যবহার করুন।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
'রিভিউ' টেবিল থেকে, 'product_id', 'রেটিং' এবং 'avg_product_rating' (পণ্য দ্বারা বিভক্ত গড় রেটিং) দেখান। সমস্ত সারি দেখান।
ইঙ্গিত দেখান
AVG(রেটিং) এবং PARTITION BY product_id ব্যবহার করুন। প্রয়োজন হলে NUMERIC-এ কাস্ট করুন।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ