Online Reference

Home

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

Var Function, VarP Function

SQL Aggregate Function, ส่งออกค่าเป็นค่าความแปรปรวนของข้อมูลประชากร (Population) หรือกลุ่มตัวอย่าง ของกลุ่มข้อมูลที่เก็บในฟิลด์ที่ระบุในคิวรี่

ไวยากรณ์

Var(expr )

VarP(expr )

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

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

ฟังก์ชัน VarP ใช้สำหรับข้อมูลทั้งหมด (Population) ฟังก์ชัน Var ใช้สำหรับกลุ่มตัวอย่าง

ถ้าเป็นคิวรี่ที่เรคคอร์ดน้อยกว่า 2 เรคคอร์ด (หรือไม่มีข้อมูล สำหรับฟังก์ชัน VarP) ฟังก์ชันจะส่งค่าเป็นค่าว่าง (ซึ่งแสดงว่าไม่สามารถหาค่าเบี่ยงเบนมาตรฐาน )

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

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

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

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

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

SELECT ShipCity, Var(Freight) As VarOfFreight From Orders GROUP BY ShipCity;

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

Sub MinFreight()

Dim dbs As Database, rst as Recordset, strSQL As String

Set dbs = CurrentDb

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

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

End Sub

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

= Var([Freight])

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

ตัวอย่าง

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

Sub VarX()

Dim dbs As Database, rst As Recordset

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

' คำนวณค่าความแปรปรวนของต้นทุนการส่งตามใบสั่งซื้อที่ส่งไปยัง UK
Set rst = dbs.OpenRecordset("SELECT Var(Freight) " _
  & "AS [UK Freight Variance] FROM Orders WHERE ShipCountry = 'UK';")

' ย้าย Recordset
rst.MoveLast

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

Set rst = dbs.OpenRecordset("SELECT VarP(Freight) " _
  & "AS [UK Freight VarianceP] FROM Orders WHERE ShipCountry = 'UK';")

' ย้าย Recordset
rst.MoveLast

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

End Sub

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

การใช้ฟังก์ชัน Var และ VarP ในการคำนวณค่าความเบี่ยงเบนมาตรฐานของค่าขนส่งสินค้าที่ส่งไปยัง UK สามารถสร้าง expression ใน SQL view ของ Query Window

SELECT Var([Freight]) AS [UKFreightVariance] FROM Orders
WHERE [ShipCountry] = 'UK';

SELECT VarP([Freight]) AS [UKFreightVarianceP] FROM Orders
WHERE [ShipCountry] = 'UK';

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

= Var([Freight])