Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL

SQL GROUP BY: คู่มือการจัดกลุ่มข้อมูล

คำสั่ง SQL GROUP BY ใช้ใน aggregate functions ใช้จัดกลุ่มข้อมูลที่เลือกจากคิวรี่ตามคอลัมน์เฉพาะ สามารถระบุหลายคอลัมน์สำหรับจัดกลุ่มด้วย GROUP BY

เมื่อทำงานกับ aggregate functions ใน SQL มักต้องจัดกลุ่มแถวตามค่าคอลัมน์ที่เหมือนกัน

เช่น ต้องการรายชื่อสาขา และจำนวนพนักงานในแต่ละสาขา ต้องใช้ aggregate function และ group by ชื่อสาขา

นี่คือที่มาของ clause SQL GROUP BY ในบทช่วยสอนนี้ เราจะอธิบายวิธีใช้ clause GROUP BY

บทนำสั้นๆ เกี่ยวกับ Aggregate Functions

บ่อยครั้งที่ทำงานกับฐานข้อมูล คุณไม่ได้มองหาข้อมูลจริงในฐานข้อมูล แต่ต้องการข้อมูลเกี่ยวกับข้อมูล เช่น จำนวนสินค้าที่ไม่ซ้ำกัน หรือคะแนนสูงสุดในลีดเดอร์บอร์ด

มีฟังก์ชัน built-in ใน SQL ให้ข้อมูลเหล่านี้ เรียกว่า aggregate functions

เช่น ต้องการรู้ว่ามีพนักงานขายกี่คน ใช้ COUNT ฟังก์ชันนับและคืนจำนวนแถวที่ตรงเงื่อนไข Aggregate functions อื่นๆ: SUM, AVG, MIN, MAX

อยากเรียนรู้เพิ่มเติม? อ่านคู่มือ SQL aggregate functions ของเรา

SQL GROUP BY

Clause SQL GROUP BY จัดกลุ่มแถว GROUP BY clauses พบบ่อยในคิวรี่ที่ใช้ aggregate functions เช่น MIN และ MAX คำสั่ง GROUP BY บอก SQL ว่าจะแสดงข้อมูลในคอลัมน์ที่ไม่ใช่ aggregate function ยังไง

ไวยากรณ์ของ GROUP BY:

SELECT COUNT(column1_name), column2_name FROM table1_name GROUP BY column2_name;

เราใช้ aggregate function ในคิวรี่และระบุคอลัมน์อีกคอลัมน์หนึ่ง

ในคิวรี่แบบนี้ ต้องใช้ GROUP BY statement GROUP BY บอก SQL ว่าจะแสดงข้อมูลสาขายังไงแม้อยู่นอก aggregate function ต้อง group by ตารางที่ไม่อยู่ใน aggregate function

Clause GROUP BY ใช้ได้เฉพาะในคำสั่ง SQL SELECT

ตัวอย่าง GROUP BY SQL

สมมติต้องการจำนวนพนักงานรวมแต่ละตำแหน่งที่บริษัทให้ กล่าวคือ ต้องการรู้ว่ามี Sales Associate กี่คน Marketing Director กี่คน ฯลฯ

คิวรี่:

SELECT title, COUNT(title) FROM employees GROUP BY title;

ผลลัพธ์:

titlecount
Senior Sales Associate1
Sales Associate4
Vice President of Sales1
Marketing Director1

(4 แถว)

คิวรี่ GROUP BY คืนรายชื่อตำแหน่งที่ไม่ซ้ำกัน พร้อมจำนวนพนักงานที่ครองตำแหน่งนั้น

เมื่อไหร่ควรใช้ GROUP BY ใน SQL?

Clause GROUP BY จำเป็นต่อเมื่อคุณต้องการข้อมูลมากกว่าที่ aggregate function คืนค่า

หากต้องการแค่จำนวนลูกค้าทั้งหมด ใช้คิวรี่ธรรมดา:

SELECT COUNT(name) FROM customers;

ผลลัพธ์:

count
7

(1 แถว)

แต่ถ้าต้องการจำนวนลูกค้าในแต่ละแผนความภักดี ต้องใช้ GROUP BY:

SELECT loyalty_plan, COUNT(loyalty_plan) FROM customers GROUP BY loyalty_plan;

ผลลัพธ์:

loyalty_plancount
Gold1
None3
Silver1
Bronze2

(4 แถว)

SQL Group By หลายคอลัมน์ (Multiple Columns)

สามารถ GROUP BY หลายคอลัมน์ได้ เช่น ต้องการจำนวนพนักงานแต่ละสาขาแยกตามตำแหน่ง ใช้คิวรี่:

SELECT branch, title, COUNT(title) FROM employees GROUP BY branch, title;

ผลลัพธ์:

branchtitlecount
StamfordSales Associate1
AlbanyVice President of Sales1
San FranciscoSales Associate1
San FranciscoSenior Sales Associate1
AlbanyMarketing Director1
BostonSales Associate2

(6 แถว)

คิวรี่สร้างรายชื่อตำแหน่งของแต่ละพนักงาน เห็นจำนวนคนครองตำแหน่ง ข้อมูลจัดกลุ่มตามสาขาและตำแหน่ง

สรุป

Clause SQL GROUP BY จำเป็นในคำสั่งที่ใช้ aggregate function และสืบค้นตารางเพิ่มเติม ควร group by คอลัมน์ที่ไม่อยู่ใน aggregate function

อยากลองท้าทาย? เขียนคำสั่งหาจำนวนพนักงานแต่ละสาขา ตารางชื่อ "employees" คอลัมน์สาขาชื่อ "branch" กลับดูบทช่วยสอนข้างต้นว่าคิวรี่ของคุณสมเหตุสมผลไหม

เราเขียนคู่มือครบถ้วน How to Learn SQL เหมาะสำหรับมือใหม่และคนที่กำลังเรียนอยู่ ดูที่หน้า How to Learn SQL