การย้าย ค่าเฉลี่ย ใน sql เซิร์ฟเวอร์
ก่อนหน้านี้เราได้พูดถึงวิธีการเขียนค่าเฉลี่ยของกลิ้งใน Postgres ตามความต้องการที่เรากำลังแสดงให้เห็นถึงวิธีการทำเช่นเดียวกันใน MySQL และ SQL Server เราจะอธิบายถึงวิธีการอธิบายแผนภูมิที่มีเสียงดังเช่นนี้ด้วยเส้นค่าเฉลี่ยที่เกิดขึ้นก่อนหน้านี้เป็นเวลา 7 วันเช่นนี้ ความคิดแรกกราฟแรกของเราด้านบนมีเสียงดังและยากที่จะรับข้อมูลที่เป็นประโยชน์จากเราสามารถทำให้เรียบโดยการคำนวณค่าเฉลี่ย 7 วันที่ด้านบนของข้อมูลพื้นฐานซึ่งสามารถทำได้ด้วยฟังก์ชันหน้าต่างการรวมตัวหรือความสัมพันธ์ subqueries - เราจะกล่าวถึงสองข้อแรกเราจะเริ่มต้นด้วยค่าเฉลี่ยก่อนหน้านี้ซึ่งหมายความว่าค่าเฉลี่ยจุดในวันที่ 7 ของเดือนนั้นเป็นค่าเฉลี่ยของเจ็ดวันแรกนั่นคือการเลื่อนตำแหน่งของกราฟไปทางขวา เป็นค่าเฉลี่ยที่สูงขึ้นในช่วงเจ็ดวันต่อไปนี้ขั้นแรกสร้างตารางจำนวนขั้นกลางเราต้องการคำนวณค่าเฉลี่ยสำหรับการลงชื่อสมัครใช้ทั้งหมดในแต่ละวันสมมติว่าเรามีตารางผู้ใช้ทั่วไปที่มีแถวต่อผู้ใช้ใหม่และสร้างเวลา เราสามารถสร้างภาพรวมของเราได้ ignups ตารางเช่นดังนั้นใน Postgres และ SQL Server คุณสามารถใช้เป็น CTE ใน MySQL คุณสามารถบันทึกเป็นตารางชั่วคราวโพสต์โกรกลิ้งเฉลี่ยโชคดีที่ Postgres มีฟังก์ชันหน้าต่างซึ่งเป็นวิธีที่ง่ายที่สุดในการคำนวณค่าเฉลี่ยการทำงานแบบสอบถามนี้ สมมติว่าวันที่ไม่มีช่องว่างแบบสอบถามมีค่าเฉลี่ยในช่วงเจ็ดแถวที่ผ่านมาไม่ใช่วันที่เจ็ดที่ผ่านมาหากข้อมูลของคุณมีช่องว่างให้เติมข้อมูลเหล่านี้ลงใน generateseries หรือเข้าร่วมกับตารางที่มีแถววันที่มีความหนาแน่นสูงมิลลิวินาที Rolling Average. MySQL ขาด แต่เราสามารถคำนวณแบบเดียวกันได้โดยใช้ self-joins สำหรับแต่ละแถวในตารางนับของเราเราเข้าร่วมแถวที่อยู่ในช่วงเจ็ดวันที่ผ่านมาทั้งหมดและใช้ค่าเฉลี่ยโดยแบบสอบถามนี้จะจัดการกับช่องว่างวันที่เรากำลังมองหาโดยอัตโนมัติ แถวภายในช่วงวันที่มากกว่าแถวก่อน N SQL Server Rolling เฉลี่ยเซิร์ฟเวอร์ SQL มีฟังก์ชันหน้าต่างดังนั้นการคำนวณค่าเฉลี่ยกลิ้งสามารถทำได้ทั้งในรูปแบบ Postgres หรือสไตล์ MySQL สำหรับความเรียบง่ายเราใช้ MySQL versi on ด้วยตนเองเข้าร่วมนี้เป็น conceptually เช่นเดียวกับใน MySQL การแปลเพียงอย่างเดียวคือฟังก์ชั่น dateadd และชื่ออย่างชัดเจนโดยคอลัมน์ columns. Other Averages. We เน้น 7 วันต่อท้ายค่าเฉลี่ยในการโพสต์นี้ถ้าเราต้องการที่จะมองไปที่ ค่าเฉลี่ยชั้นนำ 7 วันมันง่ายเหมือนการเรียงลำดับวันที่ในทิศทางอื่นถ้าเราต้องการดูค่าเฉลี่ยกึ่งกลางเราใช้ d ช่วงที่เรียงกันระหว่าง 3 ก่อนหน้าและ 3 ต่อไปนี้ MySQL ระหว่าง - 3 และ 3 ใน MySQL SQL Server ระหว่างวันที่ dateadd, -3 และ dateadd, 3. ฉันกำลังทำงานกับ SQL Server 2008 R2 พยายามคำนวณค่าเฉลี่ยเคลื่อนที่สำหรับแต่ละระเบียนในมุมมองของฉันฉันต้องการเก็บค่าของระเบียนก่อนหน้า 250, แล้วคำนวณค่าเฉลี่ยสำหรับการเลือกนี้คอลัมน์มุมมองของฉันมีดังนี้.TransactionIDไม่ซ้ำกันสำหรับแต่ละ TransactionID ฉันต้องการจะคำนวณค่าเฉลี่ยสำหรับค่าของคอลัมน์มากกว่า 250 ระเบียนก่อนดังนั้นสำหรับ TransactionID 300 เก็บค่าทั้งหมดจากมุมมอง 250 แถวก่อนหน้า เรียงลำดับจากมากไปน้อยโดย Transacti onID แล้วในคอลัมน์ MovAvg เขียนผลของค่าเฉลี่ยของค่าเหล่านี้ฉันต้องการเก็บข้อมูลภายในช่วง records. asked Oct 28 14 at 20 58.This เป็น Evergreen Joe Celko คำถามฉันไม่สนใจที่มีการใช้แพลตฟอร์ม DBMS แต่ ในกรณีใด Joe สามารถตอบมากกว่า 10 ปีที่ผ่านมากับมาตรฐาน SQL. Joe Celko SQL ปริศนาและคำตอบอ้างอิงที่พยายามปรับปรุงครั้งล่าสุดแสดงให้เห็นว่าเราสามารถใช้คำกริยาในการสร้างแบบสอบถามที่จะทำให้เรามีค่าเฉลี่ยเคลื่อนที่เป็นพิเศษ คอลัมน์หรือแบบสอบถามวิธีที่ดีกว่าแบบสอบถามเป็นเทคนิคที่ดีกว่าเนื่องจากวิธีการ UPDATE จะ denormalize ฐานข้อมูล แต่ถ้าข้อมูลทางประวัติศาสตร์ที่ถูกบันทึกไว้จะไม่เปลี่ยนแปลงและคำนวณค่าเฉลี่ยเคลื่อนที่มีราคาแพงคุณอาจพิจารณาใช้วิธีคอลัมน์ SQL Puzzle query. by ทั้งหมดหมายความว่าคุณเพียงแค่โยนไปยังถังน้ำหนักที่เหมาะสมขึ้นอยู่กับระยะทางจากจุดเวลาปัจจุบันเช่นน้ำหนัก 1 สำหรับ datapoints ภายใน 24 ชั่วโมงจาก datapoint ปัจจุบัน น้ำหนัก 0 5 สำหรับ datapoints ภายใน 48hrs กรณีที่มันสำคัญเท่าใด datapoints ติดต่อกันเช่น 6 12am และ 11 48pm อยู่ไกลจากกันกรณีใช้ฉันสามารถคิดจะพยายามที่จะเรียบ histogram ที่ datapoints ไม่หนาพอ msciwoj 27 พฤษภาคม 15 ที่ 22 22. ฉันไม่แน่ใจว่าผลลัพท์ที่คาดหวังของคุณแสดงค่าเฉลี่ยของการเคลื่อนย้ายแบบคลาสสิกเป็นเวลา 3 วันตัวอย่างเช่นหมายเลขสามตัวแรกของคำอธิบายให้ แต่คุณคาดหวังว่า 360 360 จะสับสนอย่างไรก็ตามฉัน แนะนำวิธีแก้ปัญหาต่อไปนี้ซึ่งใช้ AVG หน้าต่างฟังก์ชันวิธีนี้มีประสิทธิภาพมากขึ้นชัดเจนและทรัพยากรน้อยกว่า SELF-JOIN แนะนำในคำตอบอื่น ๆ และฉันประหลาดใจที่ไม่มีใครได้ให้ทางออกที่ดีกว่าคุณเห็นว่า AVG ถูกห่อ กับกรณี rownum แล้วบังคับ NULL s ในแถวแรกที่ 3 วัน Moving Average มีความหมาย. ตอบ 23 กุมภาพันธ์ 16 ที่ 13 12 เราสามารถใช้ Joe Celko s ซ้ายสกปรกวิธีการเข้าร่วมตามที่อ้างถึงข้างต้นโดย Diego Scaravaggi เพื่อตอบ ถามคำถามตามที่ได้ถามสร้างเกรย์เอาท์พุทที่ร้องขอเอาไว้ตอบ 9 ม. ค. 16 ที่ 0 33. คำตอบของคุณ 2017 Stack Exchange, Inc.
Comments
Post a Comment