ก่อนหน้านี้เราได้พูดถึงวิธีการเขียนค่าเฉลี่ยของกลิ้งใน 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 Anywhere Help อยู่ห่างไกลจากง่ายสิ่งที่ทำให้ตัวอย่างเช่นนั้น ซับซ้อนนอกจากคำสั่งปัญหาที่คำนวณค่าเฉลี่ยเคลื่อนที่ของการขายผลิตภัณฑ์ทั้งหมดโดยเดือนในปี 2000.Here สิ่งที่ทำให้การอ้างอิง complex. two สอง AVG function. a GROUP BY ซึ่งทั้งหมดด้วยตัวเองทำให้เพียงเกี่ยวกับใด ๆ เลือกหัว scratcher วลีซ่อน WINDOW clause. a ประโยค WINDOW ที่ doesn t แม้ใช้คำหลัก WINDOW เพื่อไม่ได้ฝึกหัดคนที่ต้องการตัวอย่างมากขึ้นกว่าคนอื่นมันไม่ชัดเจนว่า WINDOW มีส่วนเกี่ยวข้องที่ทั้งหมดไม่เพียงประโยค WINDOW ใด ๆ ใจคุณ, แต่หนึ่งที่มีทุกองค์ประกอบเดียวคุณสามารถรหัส WINDOW. a PARTITION BY. a ประโยค RANGE ไม่ประโยค ROWS ง่าย แต่เต็มเป่าข้อ RANGE หนึ่งที่มีความสัมพันธ์สนิทกับ ORDER BY ฉันรู้ว่าสิ่งที่เป็นแถว, แต่สิ่งที่ redacted คือ RANGE แต่รอมีมากขึ้นการเลือก RANGE ใน ROWS ในตัวอย่างนี้มีความสำคัญต่อการดำเนินการที่ถูกต้องของแบบสอบถามเพื่อการอภิปรายที่สมบูรณ์มากขึ้นในตัวอย่างเฉพาะนี้ดูตัวอย่างที่ 23 - การคำนวณค่าเฉลี่ยเคลื่อนที่ ในกระดาษสีขาว OLAP ที่ยอดเยี่ยมของ Glenn Paulley ตอนนี้ขอให้ย้อนกลับไปดูค่าเฉลี่ย Average Moving Average ที่แท้จริงจริงๆตัวอย่างต่อไปนี้แสดงข้อมูลมูลค่า 10 วันพร้อมกับค่าเฉลี่ยเคลื่อนที่ของค่าวันนี้และเมื่อวานนี้เป็นบรรทัด WINDOW ในบรรทัด 21 ถึง 23 กำหนดหน้าต่างเคลื่อนที่ที่มีแถวสองแถวแถวปัจจุบันแถว ROW ปัจจุบันและแถวที่เมื่อวานนี้ 1 PRECEDING. WINDOW ORDER BY กำหนดว่า PRECEDING หมายถึงแถวก่อนโดย and. the ROWS กำหนดขนาดของหน้าต่างเสมอสองแถวการแสดงออก AVG Over twodays ในบรรทัดที่ 19 อ้างถึงคำสั่ง WINDOW ตามชื่อและบอก SQL Anywhere เพื่อคำนวณค่าเฉลี่ยของค่าสองค่าที่มีอยู่ในหน้าต่างเลื่อน 2 แถวสำหรับแต่ละแถวในชุดผลลัพธ์ดังนั้นสำหรับ 2012 -02-02 ค่าเฉลี่ย 10 และ 20 คือ 15 000000.for 2012-02-03 ค่าเฉลี่ย 20 และ 10 คือ 15 000000.for 2012-02-04 ค่าเฉลี่ย 10 และ 30 คือ 20 000000.for 2012-02 -10 ค่าเฉลี่ยของ 10 และ 60 คือ 35 000000.Oops สิ่งที่เกี่ยวกับแถวแรกแถว 2012/02/01 ไม่ได้มีแถวที่กำหนดดังนั้นค่าเฉลี่ยของหน้าต่างที่เคลื่อนที่ตาม Glenn Paulley คือสีขาว กระดาษในกรณีของหน้าต่างเคลื่อนที่จะสันนิษฐานว่าแถวที่มีค่า Null อยู่ก่อนแถวแรกและหลังจากแถวสุดท้ายใน inpu t นั่นหมายความว่าเมื่อหน้าต่างเคลื่อนที่มี 2012-02-01 เป็น ROW ปัจจุบันแถว PRECEDING 1 มีค่าเป็น NULL และเมื่อ SQL Anywhere คำนวณ AVG ที่มีค่า NULL จะไม่นับ NULL ที่ไม่อยู่ใน เศษหรือในตัวหารเมื่อคำนวณค่าเฉลี่ยที่นี่ s หลักฐานที่ว่าทำไม twodayaverage 10 000000 สำหรับแถวแรก 2012-02-01 โพสต์โดย Breck Carter ที่ 3 47 PM. I ใช้รหัสต่อไปนี้ในการคำนวณ 9 วันเฉลี่ยเคลื่อนที่ . แต่มันไม่ทำงานเพราะมันเป็นครั้งแรกคำนวณทั้งหมดของเขตข้อมูลที่ส่งกลับก่อนที่จะเรียกว่าขีด จำกัด ในคำอื่น ๆ ก็จะคำนวณปิดทั้งหมดก่อนหรือเท่ากับวันที่นั้นและไม่เพียง 9.So สุดท้ายฉันต้องคำนวณ SUM เลือกค่า SUM จาก SELECT. Now ฉันจะไปเกี่ยวกับการทำเช่นนี้และเป็นค่าใช้จ่ายสูงมากหรือมี way. asked ดี 20 เมษายน 13 ที่ 13 43
No comments:
Post a Comment