কম্পিউটার টিউটোরিয়াল

MySQL-এ গড় দাম (AVG) নির্দিষ্ট মানের চেয়ে কম olan প্রোডাক্ট বের করা

MySQL-এ GROUP BY এবং HAVING ক্লজ ব্যবহার করে প্রতিটি প্রোডাক্টের গড় দাম (average price) নির্দিষ্ট মানের চেয়ে কম কিনা তা যাচাই করা যায়।

উদাহরণ: টেবিল তৈরি এবং ডেটা ইনসার্ট

mysql> create table DemoTable848( 
    ProductId int, 
    ProductPrice int 
); 
Query OK, 0 rows affected (1.20 sec)
mysql> insert into DemoTable848 values(100,30); 
Query OK, 1 row affected (0.57 sec) 
mysql> insert into DemoTable848 values(101,50); 
Query OK, 1 row affected (1.06 sec) 
mysql> insert into DemoTable848 values(100,40); 
Query OK, 1 row affected (0.10 sec) 
mysql> insert into DemoTable848 values(101,25); 
Query OK, 1 row affected (0.11 sec) 
mysql> insert into DemoTable848 values(100,20); 
Query OK, 1 row affected (0.31 sec)

সকল রেকর্ড দেখানো

mysql> select * from DemoTable848;
+-----------+--------------+
| ProductId | ProductPrice |
+-----------+--------------+
| 100       | 30           |
| 101       | 50           |
| 100       | 40           |
| 101       | 25           |
| 100       | 20           |
+-----------+--------------+
5 rows in set (0.00 sec)

গড় দাম ৩৫-এর চেয়ে কম olan প্রোডাক্ট বের করা

mysql> select ProductId, avg(ProductPrice) from DemoTable848 group by ProductId having AVG(ProductPrice) < 35;
+-----------+-------------------+
| ProductId | avg(ProductPrice) |
+-----------+-------------------+
| 100       | 30.0000           |
+-----------+-------------------+
1 row in set (0.00 sec)

ব্যাখ্যা

  • GROUP BY ProductId - প্রতিটি প্রোডাক্টের জন্য গোষ্ঠী
  • AVG(ProductPrice) - প্রতিটি গোষ্ঠীর গড় দাম
  • HAVING AVG(ProductPrice) < 35 - গড় ৩৫-এর চেয়ে কম olan গোষ্ঠী ফিল্টার
  • ProductId 100: (30+40+20)/3 = 30 ✓
  • ProductId 101: (50+25)/2 = 37.5 ✗

WHERE vs HAVING পার্থক্য

বিকল্প: সাবকোয়েরি ব্যবহার

SELECT ProductId, AvgPrice FROM (
    SELECT ProductId, AVG(ProductPrice) as AvgPrice 
    FROM DemoTable848 
    GROUP BY ProductId
) t WHERE AvgPrice < 35;

দ্রষ্টব্য: HAVING-এ অ্যালিয়াস ব্যবহার করা যায় (MySQL-এ): HAVING AvgPrice < 35।

  1. MySQL IN() 절에 단일 값만 지정해도 되나요?

  2. MySQL-এ NOT IN ক্লজ ব্যবহার করে নির্দিষ্ট মান বাদ দিয়ে ডেটা বের করা

  3. MySQL-এ WHERE ক্লজে তারিখ বিয়োগ করে রো সিলেক্ট করা

  4. MySQL-এ WHERE IN ক্লজে NULL হ্যান্ডলিং

কপিরাইট © https://bd.wsxdn.com সমস্ত অধিকার সংরক্ষিত
ক্লজসময়ফিল্টারএগ্রিগেট ফাংশন
WHEREগ্রুপিং-এর আগেরো লেভেলনहीं
HAVINGগ্রুপিং-এর পরেগ্রুপ লেভেলহ্যাঁ