Online Reference

Home

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

Sum Function

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

ไวยากรณ์

Sum(expr )

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

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

ฟังก์ชัน Sum ใช้หาผลรวมของค่าในฟิลด์ เช่น การหาค่าผลรวมต้นทุนการขนส่ง

ฟังก์ชัน Sum ไม่พิจารณาเรคคอร์ดฟิลด์ว่าง (Null field) ในการคำนวณ เช่น ตามตัวอย่างแสดงการหาผลรวมจากผลคูณของ UnitPrice กับ Quantity

SELECT Sum(UnitPrice * Quantity)
AS [Total Revenue] FROM [Order Details];

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

ดูเพิ่มเติม

ฟังก์ชัน Count, อ๊อบเจค QueryDef (DAO Language Reference), คำสั่ง SELECT Statement, คุณสมบัติ SQL (DAO Language Reference)

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

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

ฟังก์ชัน Sum มีประโยชน์อย่างมากใน Totals query และ Crosstab query การสร้างฟังก์ชันทำแบบเดียวกับการสร้างฟังก์ชัน Sum ในตารางออกแบบคิวรี่, ในคำสั่ง 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 เป็น Sum เมื่อเรียกคิวรี่จะเห็นผลรวมของต้นทุนค่าขนส่งตามใบสั่งซื้อที่ส่งไปแต่ละเมือง

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

SELECT ShipCity, Sum(Freight) As SumOfFreight From Orders GROUP BY ShipCity;

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

Sub SumFreight()
Dim dbs As Database, rst as Recordset, strSQL As String

  Set dbs = CurrentDb
  strSQL = "SELECT ShipCity, Sum(Freight) As SumOfFreight" _
    & "From Orders GROUP BY ShipCity;"
  Set rst = dbs.OprnRecordset(strSQL)

  rst.MoveLast
  Debug.Print rst.RecordCount
  Set dbs = Nothing

End Sub

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

= Sum([Freight])

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

ตัวอย่าง

ตัวอย่างการหาค่าจาก Table ชื่อ Orders เพื่อคำนวณผลรวมการขายตามใบสั่งซื้อที่ส่งไปยัง UK โดยสมมติให้ EnumFields procedure เป็น procedure ในการพิมพ์ผลลัพธ์

Sub SumX()
Dim dbs As Database, rst As Recordset

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

  ' คำนวณผลรวมการขายตามใบสั่งซื้อที่ส่งไปยัง UK
  Set rst = dbs.OpenRecordset("SELECT" _
    & " Sum(UnitPrice*Quantity)" _
    & " AS [Total UK Sales] FROM Orders" _
    & " INNER JOIN [Order Details] ON" _
    & " Orders.OrderID = [Order Details].OrderID" _
    & " WHERE (ShipCountry = 'UK');")

  ' ย้าย Recordset
  rst.MoveLast

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

End Sub

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

การใช้ฟังก์ชัน Sum ในการคำนวณผลรวมการขายตามใบสั่งซื้อที่ส่งไปยัง UK สามารถสร้าง expression ใน SQL view ของ Query Window

SELECT Sum(UnitPrice*Quantity) AS [Total UK Sales]
FROM Orders INNER JOIN [Order Details]
ON Orders.OrderID = [Order Details].OrderID
WHERE (ShipCountry = 'UK');

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

= Sum([Freight])