SQL GROUP BY Statement
- Ilang Nakaraang Pahina SUM() ng SQL
- Ilang Susunod na Pahina HAVING ng SQL
Ang pagsusumala (halimbawa SUM) ay kadalasang kailangang magdagdag ng GROUP BY statement.
GROUP BY statement
Ang GROUP BY statement ay ginagamit upang pinagsama-samang gumamit ng mga pagsusumala, at pagkakasama ng resulta ng result set ayon sa isang o ilang column.
Gramatika ng SQL GROUP BY
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name
Halimbawa ng SQL GROUP BY
Mayroon kaming ito "Orders" table:
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 |
Ngayon, gusto naming hanapin ang kabuuang halaga ng bawat customer (ang kabuuang halaga ng bawat order).
Gusto naming gamitin ang GROUP BY statement para sa pagkakasama ng mga customer.
Ginagamit namin ang sumusunod na SQL statement:
SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer
Ang resulta ng collection ay katulad ng:
Customer | SUM(OrderPrice) |
---|---|
Bush | 2000 |
Carter | 1700 |
Adams | 2000 |
Maganda ba, ba?
Hilingin namin na tingnan kung anong mangyayari kapag pinapawalang-bahala ang GROUP BY:
SELECT Customer,SUM(OrderPrice) FROM Orders
Ang resulta ng collection ay katulad ng:
Customer | SUM(OrderPrice) |
---|---|
Bush | 5700 |
Carter | 5700 |
Bush | 5700 |
Bush | 5700 |
Adams | 5700 |
Carter | 5700 |
Ang resulta ng collection na ito ay hindi ang aming kailangan.
Kung bakit hindi maaaring gamitin ang ibang SELECT statement sa itaas? Ipaliwanag namin: Ang ibang SELECT statement sa itaas ay tinukoy ng dalawang column (Customer at SUM(OrderPrice)). "SUM(OrderPrice)" ay nagbibigay ng isang solong halaga (ang kabuuang halaga ng "OrderPrice" column), habang ang "Customer" ay nagbibigay ng anim na halaga (isang halaga para sa bawat linya ng table "Orders"). Kaya hindi namin makakuha ng tamang resulta. Gayunman, nakita ninyo na ang GROUP BY statement ay lumutas sa problema na ito.
GROUP BY mahigit sa isang column
Maaari rin naming gamitin ang GROUP BY statement para sa mahigit sa isang column, tulad ng:
SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders GROUP BY Customer,OrderDate
- Ilang Nakaraang Pahina SUM() ng SQL
- Ilang Susunod na Pahina HAVING ng SQL