Online Reference

Home

Microsoft Reference
Knowledge Developer Database Internet Resource Forum
Access
SQL Aggregate Function
ดาวน์โหลดคู่มือ

Avg Function

SQL Aggregate Function, ค่าที่ส่งออกมาเป็นการหาเฉลี่ยเลขคณิตของกลุ่มข้อมูลที่เก็บในฟิลด์ที่ระบุในคิวรี่

ไวยากรณ์

Avg(expr )

ตำแหน่ง expr เป็น expression ของข้อความระบุฟิลด์ที่เก็บข้อมูลตัวเลข ซึ่งต้องการนำมาหาค่าเฉลี่ย หรือเป็น expression ที่ใช้นำข้อมูลของฟิลด์นั้นมาคำนวณ ฟิลด์ใน expression สามารถเป็นชื่อฟิลด์ของ Table, ค่าคงที่ หรือฟังก์ชัน (สามารถนำใช้ฟังก์ชันที่ built-in หรือกำหนดเอง แต่ห้ามใช้ฟังก์ชันอื่นของ SQL aggregate function)

ลักษณะการประยุกต์

การคำนวณค่าเฉลี่ยโดยฟังก์ชัน Avg เป็นค่าเฉลี่ย (mean ซึ่งนำผลรวมของข้อมูลหารด้วยจำนวนของข้อมูล) เช่น การหาค่าเฉลี่ยของต้นทุนการขนส่ง

ฟังก์ชัน Avg ไม่รวมฟิลด์ว่าง (Null field) ในการคำนวณ

สามารถใช้ฟังก์ชัน Avg เป็น expression ในคิวรี่ และในคุณสมบัติ SQL ของอ๊อบเจค QueryDef หรือการสร้าง Recordset ที่มาจากคิวรี่ของ SQL

ดูเพิ่มเติม

อ๊อบเจค QueryDef (DAO Language Reference), คุณสมบัติ SQL (DAO Language Reference)

การประยุกต์ใน Access

ใน Microsoft Access สามารถใช้ฟังก์ชัน Avg ในตารางออกแบบคิวรี่, ในคำสั่ง SQL ที่ SQL view ของ Query Window, หรือในคำสั่ง SQL ภายในชุดคำสั่ง Visual Basic รวมถึงการใช้ฟังก์ชัน Avg ในการคำนวณตัว control บนฟอร์มหรือรายงาน

ฟังก์ชัน Avg มีประโยชน์อย่างมากใน Totals query และ Crosstab query การสร้างฟังก์ชันทำแบบเดียวกับการสร้างฟังก์ชัน Avg ในตารางออกแบบคิวรี่, ในคำสั่ง SQL ที่ SQL view ของ Query Window

ในตารางออกแบบคิวรี่ สามารถสร้าง Totals query โดยคลิกปุ่ม Totals บนแถบเครื่องมือ Query Design แถว Totals จะแทรกในตาราง จากนั้นให้ตั้งค่าเซลล์ Totals ของฟิลด์เป็น aggregate function เพื่อคำนวณข้อมูล เช่น สมมติว่ามี Table ชื่อ Orders มีฟิลด์ Freight และ ShipCity ที่ต้องการนำมาสร้างเป็นคิวรี่ เพื่อแสดงผลต้นทุนค่าขนส่งเฉลี่ยตามใบสั่งซื้อที่ส่งไปแต่ละเมือง ให้สร้าง Totals query ใหม่และ drag ฟิลด์ ShipCity ลงในตารางออกแบบคิวรี่ แล้วตั้งค่าเซลล์ Totals ของฟิลด์ ShipCity เป็น Group By จากนั้น drag ฟิลด์ Freight ลงในตารางออกแบบคิวรี่ แล้วตั้งค่าเซลล์ Totals ของฟิลด์ Freight เป็น Avg เมื่อเรียกคิวรี่จะเห็นค่าขนส่งเฉลี่ยตามใบสั่งซื้อที่ส่งไปแต่ละเมือง

การดูคำสั่ง SQL ของคิวรี่นี้ ให้เปลี่ยนเป็น SQL view ตามตัวอย่างข้างต้นจะเห็นคำสั่ง

SELECT ShipCity, Avg(Freight) As AvgOfFreight From Orders GROUP BY ShipCity;

สามารถใช้คำสั่ง SQL ภายในชุดคำสั่ง Visual Basic ตัวอย่างเช่น procedure ต่อไปนี้เป็นการสร้าง dynaset แบบ Recordset ตามคำสั่ง SQL

Sub AvgFreight()
  Dim dbs As Database, rst as Recordset, strSQL As String
  Set dbs = CurrentDb

  strSQL = "SELECT ShipCity, Avg(Freight) As AvgOfFreight"_
& "From Orders GROUP BY ShipCity;"

  Set rst = dbs.OprnRecordset(strSQL)
  rst.MoveLast
  Debug.Print rst.RecordCount

  Set dbs = Nothing

End Sub

การใช้ฟังก์ชัน Avg ในการคำนวณตัว control ให้ตั้งค่าของคุณสมบัติ ControlSource ด้วย expression ของฟังก์ชัน Avg เช่น

= Avg([Freight])

ถ้าต้องการจำกัดค่าในการคำนวณสำหรับฟังก์ชัน Avg ให้ตั้งค่าในการคัดเลือกข้อมูลที่คุณสมบัติ Filter

ตัวอย่าง

ตัวอย่างการหาค่าเฉลี่ยของค่าขนส่งของการสั่งซื้อที่มีค่าขนส่งมากกว่า ฿100 โดยสมมติให้ EnumFields procedure เป็น procedure ในการพิมพ์ผลลัพธ์

Sub AvgX()

  Dim dbs As Database, rst As Recordset

  ' ต้องปรับปรุงคำสั่งนี้ให้มีพาร์ทของ Northwind
  Set dbs = OpenDatabase("Northwind.mdb")

  ' คำนวณค่าเฉลี่ยค่าขนส่งของใบสั่งซื้อที่มีค่าขนส่งมากกว่า ฿100
  Set rst = dbs.OpenRecordset("SELECT Avg(Freight) AS [Average Freight]" _
& " FROM Orders WHERE Freight > 100;")
  rst.MoveLast ' ย้าย Recordset

  ' เรียก EnumFields พิมพ์เนื้อหาของ Recordset โดยส่งผ่าน Recordset และความกว้างฟิลด์ที่ต้องการ
  EnumFields rst, 25
  dbs.Close
End Sub

ตัวอย่างการประยุกต์ใน Access

การใช้ฟังก์ชัน Avg ในการคำนวณค่าเฉลี่ยของค่าขนส่งของใบสั่งซื้อที่มีค่าขนส่งมากกว่า ฿100 สามารถสร้าง expression ใน SQL view ของ Query Window

SELECT Avg([Freight]) AS [Average Freight] FROM Orders WHERE [Freight] > 100;

การใช้ฟังก์ชัน Avg ในการคำนวณค่าตัว control ของฟอร์มเพื่อหาค่าตามตัวอย่างข้างต้น ซึ่งใช้แหล่งข้อมูลจาก Table ชื่อ Orders เช่นเดียวกัน การประยุกต์ฟังก์ชัน Avg ให้สร้างเป็น expression ในคุณสมบัติ ControlSource ของตัว control ในฟอร์ม และการคัดเลือกค่าฟิลด์ Freight ที่มากกว่า ฿100 ให้ กำหนด expression ในคุณสมบัติ Filter ของฟอร์ม

= Avg([Freight])