6.1 รายการฟังก์ชันรวม

เมื่อคุณใช้การจัดกลุ่มแถวใน SQL ด้วยตัวดำเนินการGROUP BYคุณสามารถใช้SELECTฟังก์ชันในคำสั่งที่ดำเนินการกับข้อมูลที่จัดกลุ่มได้ ฟังก์ชันดังกล่าวเรียกอีกอย่างว่าฟังก์ชันรวม

นี่คือรายการที่ได้รับความนิยมสูงสุด:

# การทำงาน คำอธิบาย
1 นับ() ส่งกลับจำนวนของค่าในกลุ่ม
2 ผลรวม() ส่งกลับผลรวมของค่าในกลุ่ม
3 สูงสุด() ส่งกลับค่าสูงสุดของกลุ่ม
4 นาที() ส่งกลับค่าต่ำสุดของกลุ่ม
5 เฉลี่ย () ส่งกลับค่าเฉลี่ยของกลุ่ม
6 BIT_AND() ดำเนินการในระดับบิตและเหนือค่ากลุ่มทั้งหมด
7 BIT_OR() ดำเนินการในระดับบิตหรือมากกว่าค่ากลุ่มทั้งหมด
8 BIT_XOR() ดำเนินการ XOR ระดับบิตกับค่ากลุ่มทั้งหมด
9 GROUP_CONCAT() เชื่อมโยงค่ากลุ่มทั้งหมดเป็นสตริงเดียว
นี่ไม่ใช่รายการฟังก์ชันรวมทั้งหมด แต่ส่วนที่เหลือมีความเฉพาะเจาะจงมากและฉันไม่คิดว่าคุณจะใช้มันในอีก 5 ปีข้างหน้า หากคุณยังต้องการ คุณสามารถอ่านเอกสารอย่างเป็นทางการสำหรับ DBMS ของคุณได้เสมอ

ทีนี้มาดูตัวอย่างบางส่วนที่มีฟังก์ชันรวมของเรา

6.2 วิเคราะห์เงินเดือนพนักงาน

ลองคำนวณสถิติเกี่ยวกับพนักงานของเราจากตารางพนักงาน

คำถามที่หนึ่ง: เรามีพนักงานกี่คน?

หากเราต้องการทราบจำนวนระเบียนทั้งหมดในตาราง เราสามารถใช้ฟังก์ชันการรวมสำหรับสิ่งCOUNTนี้ คำขอจะมีลักษณะดังนี้:

SELECT COUNT(*) FROM employee

และ MySQL จะส่งกลับหมายเลข 6 เป็นคำตอบ เรามีพนักงาน 6 คนในแผนก รวมทั้งแมวด้วย เอาล่ะ.

คำถามที่สองเราจ่ายเงินให้พนักงานทุกคนเดือนละเท่าไหร่?

ในการตอบคำถามนี้ เราจำเป็นต้องรวมเงินเดือนของพนักงานทั้งหมด ในการทำเช่นนี้ เราใช้ฟังก์ชันการรวมSUM()

คำขอจะมีลักษณะดังนี้:

SELECT SUM(salary) FROM employee

โปรดทราบว่าเวลานี้เราต้องระบุค่าของคอลัมน์ที่เรากำลังสรุป เราได้ระบุคอลัมน์เงินเดือน เราไม่สามารถรวมเขตข้อมูลทั้งหมดในตารางได้

และ MySQL จะส่งคืนหมายเลข 461,000 เป็นคำตอบ เรามีพนักงาน 6 คนในแผนกและเงินเดือน 461,000 มากเกินไป.

และสุดท้าย คำถามที่สาม: เงินเดือนสูงสุดและต่ำสุดของเราในแผนกคือเท่าไหร่? เรามาคำนวณเงินเดือนเฉลี่ยกัน ในการทำ เช่นนี้เราจำเป็นต้องมีฟังก์ชันMINและMAXAVG

แบบสอบถามจะซับซ้อนขึ้นเล็กน้อยในครั้งนี้และมีลักษณะดังนี้:

SELECT MIN(salary), AVG(salary), MAX(salary)
FROM employee

ผลลัพธ์ของแบบสอบถามนี้จะเป็น:

นาที (เงินเดือน) AVG (เงินเดือน) MAX (เงินเดือน)
1,000 76833.3333 200,000

ค่าจ้างขั้นต่ำในแผนกของเราคือ 1,000 ดอลลาร์ – ดีมาก เงินเดือนสูงสุดคือ 200,000 แต่นี่คือผู้อำนวยการ

แต่เงินเดือนเฉลี่ยสูงเกินไป คุณต้องปรับต้นทุนให้เหมาะสม มาจ้างแมวตัวอื่นกันเถอะ :)