Online Reference

Home

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

StDev Function, StDevP Function

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

ไวยากรณ์

StDev(expr )

StDevP(expr )

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

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

ฟังก์ชัน StDevP ใช้สำหรับข้อมูลประชากร (Population) ฟังก์ชัน StDev ใช้สำหรับกลุ่มตัวอย่าง

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

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

ดูเพิ่มเติม

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

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

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

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

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

SELECT ShipCity, StDev(Freight) As StDevOfFreight 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, StDev(Freight) As StDevOfFreight" _
    & "From Orders GROUP BY ShipCity; "

  Set rst = dbs.OprnRecordset(strSQL)

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

End Sub

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

= StDev([Freight])

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

ตัวอย่าง

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

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

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

  ' คำนวณค่าความเบี่ยงเบนมาตรฐานของค่าขนส่งสินค้าที่ส่งไปยัง UK
  Set rst = dbs.OpenRecordset("SELECT StDev(Freight) AS [Freight Deviation] " _
    & "FROM Orders WHERE ShipCountry = 'UK';")

  ' ย้าย Recordset
  rst.MoveLast

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

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

  ' ย้าย Recordset
  rst.MoveLast

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

End Sub

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

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

SELECT StDev([Freight]) AS [FreightDev] FROM Orders WHERE [ShipCountry] = ‘UK’;

SELECT StDevP([Freight]) AS [FreightDevP] FROM Orders WHERE [ShipCountry] = ‘UK’;

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

= StDev([Freight])