SQL GROUP BY ਬਿਆਨ

ਹੈਜ਼ੋਰ ਗਿਆਨ ਫੰਕਸ਼ਨ (ਉਦਾਹਰਣ SUM) ਸਾਧਾਰਨ ਤੌਰ 'ਤੇ GROUP BY ਵਾਕਯ ਨੂੰ ਜੋੜਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ。

GROUP BY ਵਾਕਯ

GROUP BY ਵਾਕਯ ਹੈਜ਼ੋਰ ਗਿਆਨ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਜੋੜਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਜਿਸ ਨੂੰ ਇੱਕ ਜਾਂ ਵੱਧ ਸਤੰਭਾਂ ਦੇ ਅਧਾਰ 'ਤੇ ਰੈਸਲਟ ਸੈਟ ਵਿੱਚ ਸਮੂਹਬੱਧ ਕੀਤਾ ਜਾਂਦਾ ਹੈ。

SQL GROUP BY ਗਰੰਥ

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name

SQL GROUP BY ਉਦਾਹਰਣ

ਅਸੀਂ ਹੇਠ ਲਿਖੇ 'Orders' ਟੇਬਲ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਾਂ:

O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter

ਹੁਣ, ਅਸੀਂ ਹਰੇਕ ਮੈਂਬਰ ਦੇ ਕੁੱਲ ਰਕਮ (ਕੁੱਲ ਆਰਡਰ) ਲੱਭਣਾ ਚਾਹੁੰਦੇ ਹਾਂ。

ਅਸੀਂ ਮੈਂਬਰ ਨੂੰ ਗਰੁੱਪ ਕਰਨ ਲਈ ਮੈਂਬਰ ਗਰੁੱਪ ਸਟੇਟਮੈਂਟ ਵਰਤਣਾ ਚਾਹੁੰਦੇ ਹਾਂ。

ਅਸੀਂ ਹੇਠ ਲਿਖੇ SQL ਸਟੇਟਮੈਂਟ ਵਰਤੀਏ ਹਨ:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer

ਨਤੀਜੇ ਸੈੱਟ ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਹੋਵੇਗਾ:

Customer SUM(OrderPrice)
Bush 2000
Carter 1700
Adams 2000

ਬਹੁਤ ਚੰਗਾ ਨਹੀਂ, ਨਾ?

ਅਸੀਂ ਇਹ ਦੇਖੀਏ ਕਿ ਜੇਕਰ ਮੈਂਬਰ ਗਰੁੱਪ ਨੂੰ ਖਤਮ ਕਰ ਦੇਈਏ ਤਾਂ ਕੀ ਹੋਵੇਗਾ:

SELECT Customer,SUM(OrderPrice) FROM Orders

ਨਤੀਜੇ ਸੈੱਟ ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਹੋਵੇਗਾ:

Customer SUM(OrderPrice)
Bush 5700
Carter 5700
Bush 5700
Bush 5700
Adams 5700
Carter 5700

ਉਸ ਨਤੀਜੇ ਸੈੱਟ ਸਾਡੇ ਲਈ ਨਹੀਂ ਹੈ。

ਤਾਂ ਇਹ ਕਿਉਂ ਉਸ ਤਰ੍ਹਾਂ ਦਾ SELECT ਸਟੇਟਮੈਂਟ ਨਹੀਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ? ਪ੍ਰਕਾਸ਼ਨ ਹੇਠ ਵਿੱਚ ਦੇਖੋ:ਉਸ ਤਰ੍ਹਾਂ ਦਾ SELECT ਸਟੇਟਮੈਂਟ ਦੋ ਕਾਲਮ (Customer ਅਤੇ SUM(OrderPrice)) ਸ਼ਾਮਿਲ ਕਰਦਾ ਹੈ।"SUM(OrderPrice)" ਇੱਕ ਮਾਤਰ ਮੁੱਲ ("OrderPrice" ਕਾਲਮ ਦਾ ਕੁੱਲ) ਵਾਪਸ ਦਿੰਦਾ ਹੈ, ਜਦਕਿ "Customer" 6 ਮੁੱਲ (ਹਰੇਕ ਮੁੱਲ "Orders" ਟੇਬਲ ਦੀ ਹਰੇਕ ਰਿਕਾਰਡ ਲਈ) ਵਾਪਸ ਦਿੰਦਾ ਹੈ।ਇਸ ਲਈ ਅਸੀਂ ਸਹੀ ਨਤੀਜਾ ਨਹੀਂ ਮਿਲਦੇ।ਪਰ, ਤੁਸੀਂ ਦੇਖਿਆ ਹੈ ਕਿ 'GROUP BY' ਸਟੇਟਮੈਂਟ ਇਹ ਸਮੱਸਿਆ ਹੱਲ ਕਰਦਾ ਹੈ。

GROUP BY ਇੱਕ ਤੋਂ ਜ਼ਿਆਦਾ ਕਾਲਮ

ਅਸੀਂ ਵੀ ਇੱਕ ਤੋਂ ਜ਼ਿਆਦਾ ਕਾਲਮਾਂ 'GROUP BY' ਵਰਤ ਸਕਦੇ ਹਾਂ, ਇਸ ਤਰ੍ਹਾਂ:

SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
GROUP BY Customer,OrderDate