MySQL GROUP BY In Hindi | GROUP BY In Hindi

📔 : MySQL 🔗

तो अभी तक आपन कई Examples में Group By का use देखा होगा , इस topic में हम उसी के बारे में बात करेंगे।

तो जैसा कि नाम से आप समझ सकते हैं कि records को group किया जा रहा है , GROUP BY same value के लिए एक group create करता है और हर group के लिए एक record return करता है।

Group By Syntax

SELECT column1, column2, [aggregate_function if any] FROM table WHERE [condition if any] GROUP BY column1, column2;

Normally Group By को aggregate functions जैसे SUM, AVG, MAX, MIN, और COUNT के साथ use किया जाता है , क्योंकि इन function को किसी particular record के लिए total record या average calculate करने के लिए किया जाता है।

MySQL GROUP BY examples

Suppose, हमारे पास users name की एक table है , जिसमे कुछ इस तरह से records available हैं।

+----+-------------+
| id | name        |
+----+-------------+
|  1 | Tom         |
|  2 | Tom Holland |
|  4 | john Doe    |
|  5 | John Quill  |
+----+-------------+

और एक दूसरी table भी है user_orders नाम की जिसमे user के orders हैं कि user ने कौन सा product किस price पर buy किया है , और कुछ इस तरह से records मौजूद हैं।

+----+---------+---------+-------+---------------------+
| id | user_id | product | total | created_at          |
+----+---------+---------+-------+---------------------+
|  1 |       1 | Shoes   |   455 | 2023-02-25 08:49:43 |
|  2 |       2 | Clothes |   200 | 2023-02-26 03:49:43 |
|  3 |       2 | Mobile  | 20000 | 2023-02-26 08:32:25 |
|  4 |       1 | Grocery |   999 | 2023-02-25 11:27:43 |
|  5 |       1 | Books   |  1100 | 2023-02-24 18:24:22 |
+----+---------+---------+-------+---------------------+

अगर पता करना हो कि किसी particular user ने कुल कितने products buy करके कितने रुपये का total pay किया है , इसके लिए कुछ इस तरह से query होगी -

SELECT users.id AS user_id, users.name, COUNT(user_orders.product) AS total_products, GROUP_CONCAT(user_orders.product) AS products, SUM(user_orders.total) AS paid_amount FROM users LEFT JOIN user_orders ON user_orders.user_id=users.id GROUP BY users.id;

Output

+---------+-------------+----------------+---------------------+-------------+
| user_id | name        | total_products | products            | paid_amount |
+---------+-------------+----------------+---------------------+-------------+
|       1 | Tom         |              3 | Shoes,Grocery,Books |        2554 |
|       2 | Tom Holland |              2 | Clothes,Mobile      |       20200 |
|       4 | john Doe    |              0 | NULL                |        NULL |
|       5 | John Quill  |              0 | NULL                |        NULL |
+---------+-------------+----------------+---------------------+-------------+

तो कुछ इस तरह Group By का use करके important calculation करके एक meaningful Output generate किया जाता है।

इसी तरह से अगर मझे check करना है कि किसी user ने कुछ buy किया है या नहीं , तो कुछ इस तरह से query होगी -

SELECT users.name, IF(SUM(user_orders.total) > 0, 'Yes', 'NO') AS buy_something FROM users LEFT JOIN user_orders ON user_orders.user_id=users.id GROUP BY users.id;

Output

+-------------+---------------+
| name        | buy_something |
+-------------+---------------+
| Tom         | Yes           |
| Tom Holland | Yes           |
| john Doe    | NO            |
| John Quill  | NO            |
+-------------+---------------+

Group By On Multiple Columns

जरूरी नहीं है कि Group By सिर्फ single column पर apply करें इसका का use आप हर उस जगह पर कर सकते हैं जिस column के bases पर आपको कोई calculation करनी हो। जितने columns का group का बनाना है उतने columns query में आप mention कर सकते हैं।

जैसे मुझे किसी particular user का daily bases पर order निकलने हैं कि daily किसी user ने कितने रुपये में क्या क्या ख़रीदा है। अब ध्यान से देखेंगे तो हमें 2 columns की जरूरत है पहला user id और दूसरा date . तो हम इन्ही दो column की grouping करेंगे।

SELECT users.id AS user_id, DATE(user_orders.created_at) AS order_date, users.name, GROUP_CONCAT(user_orders.product) AS products, SUM(user_orders.total) AS paid_amount FROM users JOIN user_orders ON user_orders.user_id=users.id GROUP BY user_id,order_date;

Output

+---------+------------+-------------+----------------+-------------+
| user_id | order_date | name        | products       | paid_amount |
+---------+------------+-------------+----------------+-------------+
|       1 | 2023-02-24 | Tom         | Books          |        1100 |
|       1 | 2023-02-25 | Tom         | Shoes,Grocery  |        1454 |
|       2 | 2023-02-26 | Tom Holland | Clothes,Mobile |       20200 |
+---------+------------+-------------+----------------+-------------+

तो कुछ तरह से हम MySQL में Group By का use करते हैं , I Hope, आपको इसके बारे में अच्छे से समझ आ गया होगा।

Hey ! I'm Rahul founder of learnhindituts.com. Working in IT industry more than 4.5 years. I love to talk about programming as well as writing technical tutorials and blogs that can help to others .... keep learning :)

Get connected with me - LinkedIn Twitter Instagram Facebook