ในคำสั่ง SQL จะมีเงื่อนไข Where และ Gropb By ที่ถูกใช้เพื่อกรองแถวที่ถูกส่งกลับโดยที่จะ Query หรือคำสั่ง SELECT database ตามเงื่อนไขที่กำหนดไว้ ซึ่งมีความแตกต่างดังต่อไปนี้
WHERE เป็นการระบุเงื่อนไขการค้นหาสำหรับแถวที่ส่งคืนโดย การQuery และ จะจำกัดแถวเฉพาะชุดแถวที่ระบุ หากตารางมีข้อมูล (records) จำนวนมากและมีคนต้องการรับข้อมูลโดยเฉพาะให้ใช้ 'where'
ซึ่งเป็นประโยชน์และเหมาะสมกว่า
GROUP BY เป็นการสรุปแถวหรือรวบแถวที่เหมือนกันเป็นกลุ่มเดี่ยว และส่งกลับแถวเดียวพร้อมข้อมูลที่สรุปได้แต่ละกลุ่ม โดยอาจจะใช้ Aggregate function ที่เหมาะสมในการ SELECT เช่น COUNT (), SUM (), MIN (), MAX () , AVG () เป็นต้น
ตัวอย่างการใช้ where
SELECT *
FROM [Sales].[Orders]
WHERE Order_Date >= '2017-01-01 00:00:00.000'
AND Order_Date < '2018-01-01 00:00:00.000'
คำสั่งนี้จะส่งคืนชุดแถวลูกค้าทั้งหมดของ sales และคำสั่งซื้อที่สอดคล้องกันของทั้งปี 2017
ตัวอย่างการใช้ GROUP BY
SELECT CustomerID, COUNT(*) AS OrderNumbers
FROM [Sales].[Orders]
WHERE Order_Date >= '2017-01-01 00:00:00.000'
AND Order_Date < '2018-01-01 00:00:00.000'
GROUP BY CustomerId
คำสั่งนี้จะส่งคืนชุดแถวของลูกค้า (CustomerId) ที่ทำรายการสั่งซื้อในปี 2017 และจำนวนการสั่งซื้อทั้งหมดที่แต่ละลูกค้าทำ
สรุป:
- WHERE จะใช้ในการกรอง record ก่อนมีการจัดกลุ่มกัน
- GROUP BY เป็นจัดกลุ่มของ record และส่งกลับข้อสรุปของแต่ละกลุ่ม