Tuesday 18 July 2017

ไมโครซอฟท์ sql เฉลี่ยเคลื่อนที่


ฉันกำลังทำงานกับ SQL Server 2008 R2 พยายามคำนวณค่าเฉลี่ยเคลื่อนที่สำหรับแต่ละระเบียนในมุมมองของฉันฉันต้องการรวบรวมค่าของระเบียนก่อนหน้า 250 รายการและคำนวณค่าเฉลี่ยสำหรับคอลัมน์ที่เลือกนี้คอลัมน์มุมมองของฉันมีดังนี้.TransactionID ไม่ซ้ำกันสำหรับ TransactionID แต่ละรายการฉันต้องการคำนวณค่าเฉลี่ยสำหรับค่าของคอลัมน์มากกว่า 250 ระเบียนก่อนหน้าดังนั้นสำหรับ TransactionID 300 ให้เก็บค่าทั้งหมดจากมุมมอง 250 แถวก่อนหน้านี้จะถูกจัดเรียงตามลำดับจากมากไปน้อย TransactionID จากนั้นในคอลัมน์ MovAvg จะเขียนผลลัพธ์ของ ค่าเฉลี่ยของค่าเหล่านี้ฉันกำลังมองหาเพื่อเก็บรวบรวมข้อมูลภายในช่วงของ records. asked 28 ตุลาคม 14 ที่ 20 58 ก่อนหน้านี้เราได้กล่าวถึงวิธีการเขียนกลิ้งเฉลี่ยใน Postgres โดยความต้องการที่นิยมเรากำลังแสดงวิธีการทำเช่นเดียวกันใน MySQL และ SQL Server. We จะครอบคลุมถึงวิธีการอธิบายแผนภูมิที่มีเสียงดังเช่นนี้ด้วยเส้นค่าเฉลี่ย 7 วันที่ผ่านมาเช่นนี้ไอเดียบิวด์กราฟแรกของเราด้านบนมีความดังและมีเสียงดังมากที่จะได้รับข้อมูลที่เป็นประโยชน์จากเราสามารถทำให้เรียบโดย p การใช้ค่าเฉลี่ย 7 วันที่ด้านบนของข้อมูลพื้นฐานซึ่งสามารถทำได้โดยใช้ฟังก์ชันหน้าต่างการรวมตัวหรือคำจำกัดความย่อยที่เกี่ยวข้อง - เราจะกล่าวถึงสองข้อแรกเราจะเริ่มต้นด้วยค่าเฉลี่ยก่อนหน้าซึ่งหมายความว่าค่าเฉลี่ยจุดบน วันที่ 7 ของเดือนเป็นค่าเฉลี่ยของเจ็ดวันแรกโดยปกติแล้วจะเป็นการเลื่อนตำแหน่งของกราฟไปทางขวาเนื่องจากการคำนวณค่าเฉลี่ยเป็นเวลาเฉลี่ยในช่วงเจ็ดวันต่อจากนี้ขั้นแรกให้สร้างตารางการคำนวณขั้นกลางเราต้องการคำนวณ เฉลี่ยเมื่อสมัครสมาชิกรวมกันในแต่ละวันสมมติว่าเรามีตารางผู้ใช้ทั่วไปที่มีแถวต่อผู้ใช้รายใหม่และสร้างไทม์สแต้มเราสามารถสร้างตารางการลงทะเบียนของเราทั้งหมดได้เช่นเดียวกับใน Postgres และ SQL Server คุณสามารถใช้งานนี้เป็น CTE ใน MySQL คุณสามารถบันทึกเป็นตารางชั่วคราวโพสต์โกรกลิ้งเฉลี่ยโชคดีที่ Postgres มีฟังก์ชันหน้าต่างซึ่งเป็นวิธีที่ง่ายที่สุดในการคำนวณค่าเฉลี่ยที่ทำงานแบบสอบถามนี้อนุมานว่าวันที่ไม่มีช่องว่างแบบสอบถามมีค่าเฉลี่ยในช่วงเจ็ดแถวที่ผ่านมา ไม่ใช่อดีตที่ผ่านมา ถ้าข้อมูลของคุณมีช่องว่างกรอกข้อมูลเหล่านี้ด้วย generateseries หรือเข้าร่วมกับตารางที่มีแถววันที่มีความหนาแน่นสูงมิลเลบร้ากลิ้ง Average. MySQL ขาดฟังก์ชันหน้าต่าง แต่เราสามารถคำนวณได้โดยใช้ Self-Join สำหรับแต่ละแถวในตารางนับของเรา เราเข้าร่วมทุกแถวที่อยู่ภายในเจ็ดวันที่ผ่านมาและใช้ค่าเฉลี่ยการค้นหานี้จะจัดการกับช่องว่างวันที่เรากำลังมองแถวที่อยู่ในช่วงวันที่มากกว่าแถวก่อน N SQL Server Rolling Average. SQL Server มีหน้าต่าง ดังนั้นคำนวณค่าเฉลี่ยกลิ้งสามารถทำได้ทั้งในรูปแบบ Postgres หรือสไตล์ MySQL สำหรับความเรียบง่ายเราใช้ MySQL รุ่นด้วยตนเองเข้าร่วมนี้เป็น conceptually เช่นเดียวกับใน MySQL แปลเฉพาะเป็นฟังก์ชัน dateadd และชื่ออย่างชัดเจน กลุ่มโดยคอลัมน์ค่าเฉลี่ยอื่น ๆ เราเน้นไปที่ค่าเฉลี่ยถ่วงน้ำหนัก 7 วันในโพสต์นี้หากเราต้องการดูค่าเฉลี่ยชั้นนำ 7 วันก็ทำได้ง่ายๆเพียงแค่เลือกวันที่ในทิศทางอื่นหากเราต้องการดู ศูนย์ ed เฉลี่ยเรา d use. Postgres แถวระหว่าง 3 ก่อนหน้าและ 3 ต่อไปนี้.MySqlระหว่าง - 3 และ 3 ใน MySQL. SQL Server ระหว่างวันที่ dateadd, -3 และ dateadd, 3.Moving เฉลี่ยใน T - SQL การคำนวณทั่วไป ในการวิเคราะห์แนวโน้มคือค่าเฉลี่ยเคลื่อนที่หรือค่าเฉลี่ยของค่าเฉลี่ยเคลื่อนที่เฉลี่ยของยกตัวอย่างเช่นแถวสุดท้าย 10 แถวค่าเฉลี่ยเคลื่อนที่แสดงเส้นโค้งที่ราบรื่นกว่าค่าจริงมากยิ่งขึ้นโดยมีระยะเวลานานกว่าค่าเฉลี่ยเคลื่อนที่ เป็นเครื่องมือที่ดีสำหรับการวิเคราะห์แนวโน้มโพสต์บล็อกนี้จะแสดงวิธีการคำนวณค่าเฉลี่ยเคลื่อนที่ใน T-SQL วิธีต่างๆจะใช้ขึ้นอยู่กับรุ่นของ SQL Server แผนภูมิด้านล่างแสดงให้เห็นถึงเส้นสีแดงเรียบผลกับค่าเฉลี่ยเคลื่อนที่ 200 วันหุ้น คำพูดเป็นเส้นสีฟ้าแนวโน้มระยะยาวสามารถมองเห็นได้ชัดเจน T-SQL Moving Avergage 200 วันการสาธิตด้านล่างนี้ต้องการฐานข้อมูล TAdb ที่สามารถสร้างขึ้นได้โดยใช้สคริปต์ที่นี่ในตัวอย่างที่กำลังจะมาถึงนี้เราจะคำนวณค่าเฉลี่ยเคลื่อนที่สำหรับ 20 วันที่ผ่านมา De รอดำเนินการในรุ่นของ SQL Server จะมีวิธีการที่แตกต่างกันในการคำนวณและตามที่เราจะเห็นในภายหลัง SQL Server รุ่นใหม่มีฟังก์ชันที่ช่วยให้การคำนวณมีประสิทธิภาพมากขึ้น SQL Server 2012 และรุ่นที่ใหม่กว่า Moving Average. This รุ่นใช้ประโยชน์จากฟังก์ชันหน้าต่างรวม Whats new ใน SQL 2012 คือความเป็นไปได้ที่จะ จำกัด ขนาดของหน้าต่างโดยการระบุจำนวนแถวก่อนหน้าหน้าต่างควรประกอบด้วยก่อนหน้านี้เป็น 19 เนื่องจากเราจะรวมแถวปัจจุบันไว้ด้วยกันใน การคำนวณดังที่คุณเห็นการคำนวณค่าเฉลี่ยเคลื่อนที่ใน SQL Server 2012 เป็นตัวเลขที่ค่อนข้างง่ายตัวเลขด้านล่างแสดงให้เห็นถึงหลักการของ windowing แถวปัจจุบันถูกทำเครื่องหมายว่าเป็นสีเหลืองหน้าต่างถูกทำเครื่องหมายด้วยพื้นหลังสีน้ำเงินค่าเฉลี่ยเคลื่อนที่อยู่ที่ค่าเฉลี่ยของค่า QuoteClose in เส้นสีฟ้า TB - SQL หน้าต่างเฉลี่ยเคลื่อนที่ผลการคำนวณในรุ่นเก่าของ SQL Server จะเหมือนกันดังนั้นจึงจะไม่แสดงอีกครั้ง SQL Server 2005 2008R2 Moving Average. รุ่นนี้ใช้ประโยชน์จากการแสดงออกของตารางทั่วไป CTE คือการอ้างถึงตนเองเพื่อรับแถวสุดท้าย 20 แถวสำหรับแต่ละแถวค่าเฉลี่ยก่อน SQL Server 2005 เวอร์ชันก่อนปี 2548 จะใช้การรวมด้านซ้ายไปยังตารางเดียวกันเพื่อรับ 20 ครั้งล่าสุด แถวตารางด้านนอกอาจกล่าวได้ว่ามีหน้าต่างที่เราต้องการคำนวณค่าเฉลี่ยเมื่อเปรียบเทียบประสิทธิภาพหากเราเรียกใช้สามวิธีที่แตกต่างกันพร้อมกันและตรวจสอบแผนการดำเนินการที่เกิดขึ้นมีความแตกต่างอย่างมากในประสิทธิภาพระหว่างวิธีการสาม วิธีการที่แตกต่างกันในการคำนวณ average. As เคลื่อนไหวที่คุณสามารถดูการปรับปรุงฟังก์ชัน windowing ใน SQL 2012 ทำให้แตกต่างกันมากในการปฏิบัติตามที่กล่าวถึงในการเริ่มต้นของการโพสต์นี้ค่าเฉลี่ยเคลื่อนที่จะถูกใช้เป็นเครื่องมือในการแสดงแนวโน้มวิธีการทั่วไปคือการ รวมการเคลื่อนไหวโดยเฉลี่ยของความยาวที่แตกต่างกันเพื่อที่จะจุดการเปลี่ยนแปลงในแนวโน้มระยะสั้นกลางและระยะยาวตามลำดับโดยเฉพาะที่น่าสนใจคือการข้ามเส้นแนวโน้มเช่น, เมื่อแนวโน้มระยะสั้นเคลื่อนที่ไปตามแนวโน้มระยะยาวหรือระยะปานกลางอาจถูกตีความว่าเป็นสัญญาณซื้อในการวิเคราะห์ทางเทคนิคและเมื่อแนวโน้มระยะสั้นเคลื่อนที่ไปตามเส้นแนวโน้มที่ยาวขึ้นสิ่งนี้สามารถตีความได้ว่าเป็นสัญญาณการขายแผนภูมิด้านล่างแสดง Quotes, Ma20, Ma50 และ Ma200.T-SQL Ma20, Ma50, Ma200 สัญญาณซื้อและขายบทความบล็อกนี้เป็นส่วนหนึ่งของซีรี่ส์เกี่ยวกับการวิเคราะห์ทางเทคนิค TA ใน SQL Server ดูบทความอื่น ๆ ที่นี่โพสต์โดย Tomas Lind.

No comments:

Post a Comment