วลี GROUP BY SQL

ฟังก์ชันหารวม (เช่น 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

ตอนนี้ เราต้องการหาจำนวนเงินรวม (จำนวนรายการสั่งซื้อ) ของลูกค้าแต่ละคน

เราต้องการใช้ GROUP BY สำหรับการทำกลุ่มลูกค้า

เราใช้คำสั่ง SQL ดังนี้:

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

ผลลัพธ์ของ GROUP BY ที่เราต้องการคล้ายกัน:

Customer SUM(OrderPrice)
Bush 2000
Carter 1700
Adams 2000

เกินความคาดหวังนัก บ้างไม่?

ให้เรามองเห็นสถานการณ์ที่มี GROUP BY ละครระหว่าง

SELECT Customer,SUM(OrderPrice) FROM Orders

ผลลัพธ์ของ GROUP BY ที่เราต้องการคล้ายกัน:

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

ผลลัพธ์ของ GROUP BY ที่เราต้องการไม่ได้

ทำไมไม่สามารถใช้คำสั่ง 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