ฟังก์ชั่นรวมใน MySQL

ฟังก์ชั่นรวมเป็นเรื่องเกี่ยวกับ

  • ทำการคำนวณหลายแถว
  • ของคอลัมน์เดียวของตาราง
  • และส่งคืนค่าเดียว

มาตรฐาน ISO กำหนดฟังก์ชันรวมห้า (5) รายการ ได้แก่

1) นับ
2) ผลรวม
3) AVG
4) นาที
5) สูงสุด

เหตุใดจึงต้องใช้ฟังก์ชันรวม

จากมุมมองทางธุรกิจ ระดับองค์กรต่างๆ มีข้อกำหนดด้านข้อมูลที่แตกต่างกัน ผู้จัดการระดับสูงมักสนใจที่จะทราบตัวเลขทั้งหมด ไม่จำเป็นต้องทราบรายละเอียดแต่ละรายการ

ฟังก์ชันการรวมช่วยให้เราสร้างข้อมูลสรุปจากฐานข้อมูลได้อย่างง่ายดาย

ตัวอย่างเช่น จากฐานข้อมูล myflix ของเรา ฝ่ายบริหารอาจต้องการรายงานต่อไปนี้

  • ภาพยนตร์เช่าน้อยที่สุด
  • ภาพยนตร์ที่ถูกเช่ามากที่สุด
  • จำนวนเฉลี่ยที่ภาพยนตร์แต่ละเรื่องถูกเช่าในหนึ่งเดือน

เราจัดทำรายงานข้างต้นอย่างง่ายดายโดยใช้ฟังก์ชันรวม

มาดูรายละเอียดฟังก์ชันรวมกันดีกว่า

ฟังก์ชัน COUNT

ฟังก์ชัน COUNT ส่งกลับจำนวนค่าทั้งหมดในฟิลด์ที่ระบุ ใช้ได้กับทั้งชนิดข้อมูลที่เป็นตัวเลขและไม่ใช่ตัวเลข ฟังก์ชันการรวมทั้งหมดตามค่าเริ่มต้นจะไม่รวมค่า Null ก่อนที่จะทำงานกับข้อมูล

COUNT (*) เป็นการใช้งานพิเศษของฟังก์ชัน COUNT ที่ส่งคืนจำนวนแถวทั้งหมดในตารางที่ระบุ COUNT (*) จะพิจารณาด้วย nulls และทำซ้ำ

ตารางด้านล่างนี้แสดงข้อมูลในตารางการเช่าภาพยนตร์

หมายเลขอ้างอิง ธุรกรรม_วันที่ กลับ_วันที่ หมายเลขสมาชิก movie_id movie_ กลับมาแล้ว
11 20-06-2012 NULL 1 1 0
12 22-06-2012 25-06-2012 1 2 0
13 22-06-2012 25-06-2012 3 2 0
14 21-06-2012 24-06-2012 2 2 0
15 23-06-2012 NULL 3 3 0

สมมติว่าเราต้องการได้จำนวนครั้งที่ภาพยนตร์ที่มี id 2 ได้ถูกเช่าไป

SELECT COUNT(`movie_id`)  FROM `movierentals` WHERE `movie_id` = 2;

ดำเนินการค้นหาข้างต้นใน MySQL ปรับแต่ง เมื่อเปรียบเทียบกับ myflixdb เราจะได้ผลลัพธ์ดังต่อไปนี้

COUNT('movie_id')
3

DISTINCT คำสำคัญ

DISTINCT คำสำคัญ

คีย์เวิร์ด DISTINCT ที่ช่วยให้เราสามารถละเว้นคำซ้ำจากผลลัพธ์ของเราได้ ซึ่งสามารถทำได้โดยการจัดกลุ่มค่าที่คล้ายคลึงกันไว้ด้วยกัน

เพื่อชื่นชมแนวคิดของ Distinct ให้เราดำเนินการสืบค้นง่ายๆ

SELECT `movie_id` FROM `movierentals`;

movie_id
1
2
2
2
3

ตอนนี้เรามาดำเนินการค้นหาเดียวกันด้วยคำหลักที่แตกต่าง -

SELECT DISTINCT `movie_id` FROM `movierentals`;

ดังที่แสดงด้านล่าง ความแตกต่างจะละเว้นบันทึกที่ซ้ำกันออกจากผลลัพธ์

movie_id
1
2
3

ฟังก์ชัน MIN

ฟังก์ชัน MIN ส่งกลับค่าที่น้อยที่สุดในเขตข้อมูลตารางที่ระบุ.

ตัวอย่างเช่น สมมติว่าเราต้องการทราบปีที่ภาพยนตร์ที่เก่าแก่ที่สุดในไลบรารีของเราออกฉาย เราสามารถใช้ MySQLฟังก์ชัน MIN เพื่อรับข้อมูลที่ต้องการ

แบบสอบถามต่อไปนี้ช่วยให้เราบรรลุเป้าหมายดังกล่าวได้

SELECT MIN(`year_released`) FROM `movies`;

ดำเนินการค้นหาข้างต้นใน MySQL workbench กับ myflixdb ให้ผลลัพธ์ดังต่อไปนี้

MIN('year_released')
2005

ฟังก์ชั่น MAX

เช่นเดียวกับชื่อที่แนะนำ ฟังก์ชัน MAX จะตรงกันข้ามกับฟังก์ชัน MIN มัน ส่งคืนค่าที่ใหญ่ที่สุดจากฟิลด์ตารางที่ระบุ.

สมมติว่าเราต้องการทราบปีที่ภาพยนตร์ล่าสุดในฐานข้อมูลของเราออกฉาย เราสามารถใช้ฟังก์ชัน MAX เพื่อให้บรรลุเป้าหมายนั้นได้อย่างง่ายดาย

ตัวอย่างต่อไปนี้จะคืนค่าปีที่ออกฉายภาพยนตร์ล่าสุด

SELECT MAX(`year_released`)  FROM `movies`;

ดำเนินการค้นหาข้างต้นใน MySQL workbench ที่ใช้ myflixdb ให้ผลลัพธ์ดังต่อไปนี้

MAX('year_released')
2012

ฟังก์ชัน SUM

สมมติว่าเราต้องการรายงานที่แสดงจำนวนเงินทั้งหมดที่ชำระไปแล้ว เราสามารถใช้ MySQL SUM ฟังก์ชั่นซึ่ง ส่งคืนผลรวมของค่าทั้งหมดในคอลัมน์ที่ระบุ. SUM ใช้ได้กับช่องตัวเลขเท่านั้น. ค่า Null จะไม่รวมอยู่ในผลลัพธ์ที่ส่งคืน

ตารางต่อไปนี้แสดงข้อมูลในตารางการชำระเงิน

การชำระเงิน_รหัส หมายเลขสมาชิก วันจ่าย ลักษณะ จำนวนเงินที่จ่าย ภายนอก_ อ้างอิง _number
1 1 23-07-2012 การชำระเงินค่าเช่าภาพยนตร์ 2500 11
2 1 25-07-2012 การชำระเงินค่าเช่าภาพยนตร์ 2000 12
3 3 30-07-2012 การชำระเงินค่าเช่าภาพยนตร์ 6000 NULL

ข้อความค้นหาที่แสดงด้านล่างจะได้รับการชำระเงินทั้งหมดและสรุปผลรวมเพื่อให้ได้ผลลัพธ์เดียว

SELECT SUM(`amount_paid`) FROM `payments`;

ดำเนินการค้นหาข้างต้นใน MySQL workbench เทียบกับ myflixdb ให้ผลลัพธ์ดังต่อไปนี้

SUM('amount_paid')
10500

AVG ฟังก์ชัน

MySQL AVG ฟังก์ชัน ส่งกลับค่าเฉลี่ยของค่าในคอลัมน์ที่ระบุ- เช่นเดียวกับฟังก์ชัน SUM ใช้งานได้กับประเภทข้อมูลตัวเลขเท่านั้น.

สมมติว่าเราต้องการหาจำนวนเงินที่จ่ายโดยเฉลี่ย เราสามารถใช้แบบสอบถามต่อไปนี้ได้

SELECT AVG(`amount_paid`)  FROM `payments`;

ดำเนินการค้นหาข้างต้นใน MySQL workbench ให้ผลลัพธ์ต่อไปนี้แก่เรา

AVG('amount_paid')
3500

ช่วยพัฒนาสมอง

คุณคิดว่าฟังก์ชันการรวมเป็นเรื่องง่าย ลองสิ่งนี้!

ตัวอย่างต่อไปนี้จะจัดกลุ่มสมาชิกตามชื่อ นับจำนวนการชำระเงินทั้งหมด จำนวนเงินชำระเฉลี่ย และยอดรวมของจำนวนเงินชำระ

SELECT m.`full_names`,COUNT(p.`payment_id`) AS  `paymentscount`,AVG(p.`amount_paid`)  AS `averagepaymentamount`,SUM(p.`amount_paid`)  AS `totalpayments` FROM members m, payments p WHERE m.`membership_number` = p.`membership_number` GROUP BY m.`full_names`;

ดำเนินการตัวอย่างข้างต้นใน MySQL Workbench ให้ผลลัพธ์ต่อไปนี้แก่เรา

AVG ฟังก์ชัน

สรุป

  • MySQL รองรับฟังก์ชันรวมมาตรฐาน ISO ทั้งห้า (5) รายการ COUNT, SUM, AVG, ต่ำสุด และ สูงสุด
  • ผลรวมและ AVG ฟังก์ชั่นใช้งานได้กับข้อมูลตัวเลขเท่านั้น
  • หากคุณต้องการแยกค่าที่ซ้ำกันออกจากผลลัพธ์ของฟังก์ชันการรวม ให้ใช้คำสำคัญ DISTINCT คีย์เวิร์ด ALL มีการซ้ำกันด้วย หากไม่มีการระบุสิ่งใดเลย ระบบจะถือว่า ALL เป็นค่าเริ่มต้น
  • ฟังก์ชันรวมสามารถใช้ร่วมกับส่วนคำสั่ง SQL อื่นๆ เช่น จัดกลุ่มตาม