คำสั่ง SQL GROUP BY ปรากฏในฟังก์ชันรวม ใช้เพื่อเปรียบเทียบข้อมูลที่คุณเลือกจากคิวรีตามคอลัมน์ใดคอลัมน์หนึ่ง คุณสามารถระบุหลายคอลัมน์ที่จะจัดกลุ่มโดยใช้คำสั่ง GROUP BY
เมื่อคุณทำงานกับฟังก์ชันการรวมใน SQL มักจะจำเป็นต้องจัดกลุ่มแถวเข้าด้วยกันตามค่าคอลัมน์ทั่วไป
ตัวอย่างเช่น สมมติว่าคุณต้องการรับรายชื่อสาขาสำหรับธุรกิจของคุณ นอกจากข้อมูลนี้แล้ว คุณต้องการดูจำนวนพนักงานที่ทำงานให้กับสาขาเหล่านั้น คุณจะต้องใช้ฟังก์ชันการรวมและกลุ่มตามชื่อสาขา
นั่นคือสิ่งที่ SQL GROUP BY เข้ามาแล้ว ในบทช่วยสอนนี้ เราจะพูดถึงวิธีใช้ GROUP BY ข้อ
ทบทวนฟังก์ชันรวม
บ่อยครั้ง—เมื่อคุณทำงานกับฐานข้อมูล—คุณไม่ต้องการดูข้อมูลจริงภายในฐานข้อมูล คุณอาจต้องการข้อมูลเกี่ยวกับข้อมูลแทน ตัวอย่างเช่น คุณอาจต้องการทราบจำนวนผลิตภัณฑ์ที่ไม่ซ้ำที่ธุรกิจของคุณขายหรือคะแนนสูงสุดบนลีดเดอร์บอร์ด
มีฟังก์ชันมากมายในตัว SQL ที่ช่วยให้คุณได้รับข้อมูลนี้ สิ่งเหล่านี้เรียกว่าฟังก์ชันรวม
ตัวอย่างเช่น สมมติว่าคุณต้องการค้นหาจำนวนพนักงานที่เป็นพนักงานขาย คุณสามารถใช้ COUNT การทำงาน. COUNT ฟังก์ชันจะนับและส่งกลับจำนวนแถวที่ตรงตามเกณฑ์ชุดหนึ่งๆ ฟังก์ชันการรวมอื่นๆ ได้แก่ SUM, AVG, MIN และ MAX
หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับฟังก์ชันการรวม โปรดอ่านคู่มือฟังก์ชันการรวม SQL
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
SQL GROUP แยกตาม
ส่วนคำสั่ง SQL GROUP BY จะเรียงแถว คำสั่งย่อย GROUP BY เป็นเรื่องปกติในแบบสอบถามที่ใช้ฟังก์ชันรวม เช่น MIN และ MAX คำสั่ง GROUP BY จะบอก SQL ถึงวิธีการรวมข้อมูลในคอลัมน์ที่ไม่ใช่การรวมใดๆ ที่คุณได้ทำการสอบถาม
ไวยากรณ์สำหรับคำสั่ง GROUP BY คือ:
SELECT COUNT(column1_name), column2_name FROM table1_name GROUP BY column2_name;
เราใช้ฟังก์ชันการรวมในการสืบค้นข้อมูลและระบุคอลัมน์อื่น
ในกรณีนี้ เราจำเป็นต้องใช้คำสั่ง GROUP BY คำสั่ง GROUP BY จะบอก SQL ถึงวิธีการแสดงข้อมูลสาขา แม้ว่าจะอยู่นอกฟังก์ชันการรวม คุณต้องจัดกลุ่มตามตารางที่ไม่ได้อยู่ในฟังก์ชันการรวม
GROUP BY clause ใช้ในคำสั่ง SQL SELECT เท่านั้น
มาดูตัวอย่างของส่วนคำสั่ง GROUP BY ใน SQL
จัดกลุ่มตามตัวอย่าง SQL
สมมติว่าเราต้องการหาจำนวนพนักงานทั้งหมดโดยแต่ละตำแหน่งมอบให้กับพนักงาน กล่าวคือ เราต้องการทราบว่าเรามีพนักงานขายกี่คน เรามีผู้อำนวยการฝ่ายการตลาดกี่คน และอื่นๆ
เราสามารถใช้แบบสอบถามต่อไปนี้เพื่อดึงข้อมูลนี้:
SELECT title, COUNT(title) FROM employees GROUP BY title;
แบบสอบถามส่งกลับหลายระเบียน:
หัวเรื่อง | นับ |
พนักงานขายอาวุโส | 1 |
พนักงานขาย | 4 |
รองประธานฝ่ายขาย | 1 |
ผู้อำนวยการฝ่ายการตลาด | 1 |
(4 แถว)
GROUP BYของเรา แบบสอบถามได้ส่งคืนรายการของชื่อที่ไม่ซ้ำที่ถือโดยพนักงาน เราจะเห็นจำนวนพนักงานที่ถือตำแหน่งนั้นข้างแต่ละตำแหน่ง
คุณควรใช้ GROUP BY ใน SQL เมื่อใด
A จัดกลุ่มโดย ข้อ จำเป็นเฉพาะเมื่อคุณกำลังมองหาข้อมูลมากกว่าที่ส่งคืนจากฟังก์ชันการรวม เราได้พูดคุยกันก่อนหน้านี้เล็กน้อย
หากคุณต้องการรับจำนวนลูกค้าที่คุณมี คุณเพียงแค่เรียกใช้แบบสอบถามปกติเท่านั้น ต่อไปนี้คือตัวอย่างการสืบค้นที่จะส่งคืนข้อมูลนี้:
SELECT COUNT(name) FROM customers;
แบบสอบถามของเราจัดกลุ่มผลลัพธ์และส่งคืน:
นับ |
7 |
(1 แถว)
หากคุณต้องการทราบจำนวนลูกค้าในแผนสมาชิกแต่ละแผนของคุณ คุณจะต้องใช้ GROUP BY คำแถลง. ต่อไปนี้คือตัวอย่างการสืบค้นที่จะได้รับรายการแผนสมาชิกและจำนวนลูกค้าในแต่ละแผน:
SELECT loyalty_plan, COUNT(loyalty_plan) FROM customers GROUP BY loyalty_plan;
แบบสอบถามของเรารวบรวมข้อมูล จากนั้น แบบสอบถามของเราจะกลับมา:
loyalty_plan | นับ |
ทองคำ | 1 |
ไม่มี | 3 |
สีเงิน | 1 |
บรอนซ์ | 2 |
(4 แถว)
SQL จัดกลุ่มตามหลายคอลัมน์
ถ้าเราต้องการ เราสามารถดำเนินการ GROUP BY ในหลายคอลัมน์ ตัวอย่างเช่น สมมติว่าเราต้องการรับรายการจำนวนพนักงานที่เรามีในแต่ละสาขาที่มีตำแหน่งที่แน่นอน เราสามารถดึงข้อมูลนี้โดยใช้แบบสอบถามต่อไปนี้:
SELECT branch, title, COUNT(title) FROM employees GROUP BY branch, title;
ชุดผลลัพธ์การสืบค้นของเราแสดง:
สาขา | หัวเรื่อง | นับ |
สแตมฟอร์ด | พนักงานขาย | 1 |
ออลบานี | รองประธานฝ่ายขาย | 1 |
ซานฟรานซิสโก | พนักงานขาย | 1 |
ซานฟรานซิสโก | พนักงานขายอาวุโส | 1 |
ออลบานี | ผู้อำนวยการฝ่ายการตลาด | 1 |
บอสตัน | พนักงานขาย | 2 |
(6 แถว)
แบบสอบถามของเราสร้างรายการของตำแหน่งที่ถือโดยพนักงานแต่ละคน เราสามารถเห็นจำนวนผู้ครองตำแหน่งนั้นได้ ข้อมูลของเราจัดกลุ่มตามสาขาที่พนักงานแต่ละคนทำงานและตำแหน่งงาน
บทสรุป
SQL GROUP BY ข้อ จำเป็นในคำสั่งใด ๆ ที่ใช้ฟังก์ชันรวมและมีการสอบถามตารางเพิ่มเติม คุณควรจัดกลุ่มตามคอลัมน์ที่ไม่ได้กล่าวถึงในฟังก์ชันรวม
คุณกำลังมองหาสิ่งที่ท้าทาย? เขียนข้อความที่ระบุจำนวนพนักงานที่ทำงานในแต่ละสาขา
ตารางนี้เรียกว่า "พนักงาน" และคอลัมน์ที่เก็บชื่อสาขาคือ "สาขา" กลับไปที่บทช่วยสอนด้านบนและดูว่าคำถามของคุณสมเหตุสมผลหรือไม่โดยพิจารณาจากสิ่งที่เราได้พูดคุยกัน
เราได้เขียนคู่มือฉบับสมบูรณ์เกี่ยวกับวิธีการเรียนรู้ SQL คู่มือนี้เหมาะสำหรับผู้เริ่มต้นและผู้ที่กำลังศึกษา SQL อยู่แล้ว ลองดูในหน้า How to Learn SQL ของเรา