7 วัน เฉลี่ยเคลื่อนที่ ใน Sql


ฉันมีตารางการใช้ผลิตภัณฑ์รายชั่วโมง (จำนวนครั้งที่ใช้ผลิตภัณฑ์) เช่นเดียวกันฉันมีข้อมูลการใช้งานสำหรับผลิตภัณฑ์ 4 ชนิด (ProductId ตั้งแต่ 1 ถึง 4) ที่เก็บไว้เป็นเวลาทุกชั่วโมงในตาราง productusage ตามที่คุณสามารถจินตนาการได้จะมีการเติบโตอย่างต่อเนื่องเนื่องจากกระบวนการ ETL แบบรายคืนจะทิ้งข้อมูลทั้งหมดในวันก่อนหน้านี้ หากไม่ได้ใช้ผลิตภัณฑ์ในช่วงเวลาใด ๆ ของวันบันทึกของชั่วโมงจะไม่ปรากฏในตารางนี้ ในทำนองเดียวกันถ้าผลิตภัณฑ์ไม่ได้ใช้ตลอดทั้งวันจะไม่มีการบันทึกใด ๆ สำหรับวันนั้นในตาราง ฉันจำเป็นต้องสร้างรายงานที่ให้การใช้ชีวิตประจำวันและ 7 วันที่ผ่านมาเฉลี่ยกลิ้งและอื่น ๆ ฉันวางแผนที่จะสร้างมุมมองที่จัดทำดัชนีไว้ใน SQL Server 2014 คุณสามารถคิดแบบสอบถาม SQL ที่มีประสิทธิภาพในการดำเนินการนี้ได้หรือไม่ Sep 18 14 เวลา 21: 08 ก่อนหน้านี้เราได้พูดถึงวิธีการเขียนค่าเฉลี่ยของม้วนใน Postgres ตามความต้องการที่เป็นที่นิยมได้แสดงวิธีการทำเช่นเดียวกันใน MySQL และ SQL Server รวมทั้งวิธีการอธิบายแผนภูมิที่มีเสียงดังเช่นนี้ด้วยเส้นเฉลี่ย 7 วันดังนี้: ความคิดที่ยิ่งใหญ่แผนภูมิแรกของเราด้านบนมีความดังและมีข้อมูลที่เป็นประโยชน์ เราสามารถทำให้เป็นไปอย่างราบรื่นโดยการคำนวณค่าเฉลี่ย 7 วันที่ด้านบนของข้อมูลพื้นฐาน ซึ่งสามารถทำได้ด้วยฟังก์ชันหน้าต่างการรวมตัวหรือคำจำกัดความย่อยที่มีความสัมพันธ์ - รวมทั้งสองอย่างแรก เริ่มต้นด้วยค่าเฉลี่ยก่อนหน้าซึ่งหมายความว่าค่าเฉลี่ยจุดในวันที่ 7 ของเดือนมีค่าเฉลี่ย 7 วันแรก การมองเห็นจะเป็นการเลื่อนตำแหน่งของกราฟไปทางขวาเนื่องจากมีการเพิ่มขึ้นเป็นเวลานานในเจ็ดวันต่อไปนี้ ขั้นแรกสร้างตารางจำนวนขั้นกลางเราต้องการคำนวณค่าเฉลี่ยสำหรับจำนวนการลงชื่อสมัครใช้ทั้งหมดในแต่ละวัน สมมติว่าเรามีตารางผู้ใช้ทั่วไปที่มีแถวต่อผู้ใช้ใหม่และสร้างไทม์สแต้มเราสามารถสร้างตารางการลงชื่อสมัครใช้ของเราได้ดังนี้: ใน Postgres และ SQL Server คุณสามารถใช้งานนี้เป็น CTE ใน MySQL คุณสามารถบันทึกเป็นตารางชั่วคราวได้ Postgres Rolling Average โชคดีที่ Postgres มีฟังก์ชันของหน้าต่างซึ่งเป็นวิธีที่ง่ายที่สุดในการคำนวณค่าเฉลี่ยในการทำงาน แบบสอบถามนี้อนุมานว่าวันที่ไม่มีช่องว่าง แบบสอบถามมีค่าเฉลี่ยในช่วงเจ็ดแถวที่ผ่านมาไม่ใช่วันที่เจ็ดที่ผ่านมา หากข้อมูลของคุณมีช่องว่างให้เติมข้อมูลเหล่านี้ด้วยคำสั่ง generateseries หรือเข้าร่วมกับตารางที่มีแถววันที่หนาแน่น MySQL Rolling Average MySQL ขาดฟังก์ชันหน้าต่าง แต่เราสามารถคำนวณได้โดยใช้ Self-Join สำหรับแต่ละแถวในตารางการนับของเราเราเข้าร่วมทุกแถวที่อยู่ในช่วงเจ็ดวันที่ผ่านมาและใช้ค่าเฉลี่ย แบบสอบถามนี้จะจัดการกับช่องว่างของวันที่โดยอัตโนมัติขณะที่เรากำลังมองหาแถวภายในช่วงวันที่แทนที่จะเป็นแถว N ก่อนหน้า SQL Server Rolling Average SQL Server มีฟังก์ชันของหน้าต่างดังนั้นการคำนวณค่าเฉลี่ยโดยรวมสามารถทำได้ทั้งแบบ Postgres หรือแบบ MySQL สำหรับความเรียบง่ายใช้ MySQL เวอร์ชันที่มีการเข้าร่วมด้วยตนเอง นี่คือ conceptually เช่นเดียวกับใน MySQL การแปลเพียงอย่างเดียวคือฟังก์ชัน dateadd และระบุชื่อกลุ่มตามคอลัมน์อย่างชัดเจน ค่าเฉลี่ยอื่น ๆ เราเน้นที่ค่าเฉลี่ยถ่วงน้ำหนัก 7 วันในโพสต์นี้ ถ้าเราต้องการดูค่าเฉลี่ยชั้นนำ 7 วันการจัดเรียงวันในทิศทางอื่นทำได้ง่ายเพียงใด ถ้าเราต้องการดูค่าเฉลี่ยที่ตรงกลางให้ใช้ wed: Postgres: แถวระหว่าง 3 ก่อนหน้าและ 3 ตาม MySql: ระหว่าง signups. date - 3 และ signups. date 3 ใน MySQL SQL Server: ระหว่าง dateadd (day, -3, signups) วันขึ้นปีใหม่) และ dateadd (วันที่ 3, signups. date) ค่าเฉลี่ยเคลื่อนที่ - MA BREAKING DOWN ค่าเฉลี่ยเคลื่อนที่ - MA เป็นตัวอย่าง SMA พิจารณาการรักษาความปลอดภัยโดยมีราคาปิดดังต่อไปนี้เกินกว่า 15 วัน: สัปดาห์ที่ 1 (5 วัน) 20, 22, 24, 25, 23 สัปดาห์ที่ 2 (5 วัน) 26, 28, 26, 29, 27 สัปดาห์ที่ 3 (5 วัน) 28, 30, 27, 29, 28 โดยเฉลี่ย 10 วันจะปิดราคาปิดสำหรับ 10 อันดับแรก วันเป็นจุดข้อมูลแรก จุดข้อมูลถัดไปจะลดราคาเริ่มต้นเพิ่มราคาในวันที่ 11 และใช้ค่าเฉลี่ยและอื่น ๆ ดังที่แสดงด้านล่าง ตามที่ระบุไว้ก่อนหน้านี้ MAs lag การกระทำราคาปัจจุบันเพราะพวกเขาจะขึ้นอยู่กับราคาที่ผ่านมายิ่งระยะเวลาที่ยาวนานสำหรับ MA มากเท่าไร ดังนั้นแมสซาชูเซตส์ระยะ 200 วันจะมีความล่าช้ามากกว่า MA 20 วันเนื่องจากมีราคาสำหรับ 200 วันที่ผ่านมา ความยาวของ MA จะขึ้นอยู่กับวัตถุประสงค์ในการซื้อขายโดย MAs สั้นสำหรับการซื้อขายระยะสั้นและ MAs ระยะยาวมีความเหมาะสมกับนักลงทุนระยะยาว นักลงทุนและผู้ค้าที่มีการซื้อขาย MA ระยะเวลา 200 วันโดยมียอดขายต่ำกว่าและต่ำกว่าค่าเฉลี่ยเคลื่อนที่นี้ถือเป็นสัญญาณการซื้อขายที่สำคัญ MAs ยังให้สัญญาณการซื้อขายที่สำคัญด้วยตัวเองหรือเมื่อสองค่าเฉลี่ยข้ามไป MA ที่เพิ่มขึ้นบ่งชี้ว่าการรักษาความปลอดภัยอยู่ในขาขึ้น ในขณะที่ค่าดัชนีลดลงแสดงให้เห็นว่าอยู่ในขาลง ในทำนองเดียวกันโมเมนตัมสูงขึ้นได้รับการยืนยันโดยการครอสโอเวอร์แบบ bullish ซึ่งเกิดขึ้นเมื่อ MA ระยะสั้นทะลุเหนือ MA ระยะยาว โมเมนตัมด้านล่างได้รับการยืนยันโดยมีการครอสโอเวอร์แบบลบซึ่งเกิดขึ้นเมื่อ MA ระยะสั้นทะลุต่ำกว่า MA ระยะยาว

Comments

Popular posts from this blog

40 Pips A วัน อัตราแลกเปลี่ยน