Monday, 17 July 2017

การย้าย ค่าเฉลี่ย Sql เซิร์ฟเวอร์ 2012


ฉันพยายามที่จะคำนวณค่าเฉลี่ยกลิ้ง 3 เดือนที่จัดกลุ่มตามภูมิภาคและเดือนตามที่ระบุไว้ในเดือนนี้มีการขยายเพื่อวัตถุประสงค์ในการอธิบายผมหวังว่าผลลัพธ์จะพูดเพียงเดือนเดียวตอนนี้ฉันสามารถทำได้โดยการสร้าง CTE การจัดกลุ่มตามภูมิภาคและเดือนแล้วเข้าร่วมกับมันสองสามครั้ง like. But ที่น่าเกลียดคิดถ้าคุณต้องทำค่าเฉลี่ยกลิ้ง 6 เดือนหรือเฉลี่ยกลิ้ง 12 เดือนฉันพยายามที่จะใช้ t-sql 2012 ฟังก์ชันการวิเคราะห์โดยเฉพาะ ตัวเลือก RANGE ที่ฉันเคยใช้ ROWS ก่อนหน้านี้ แต่ไม่เคยมีช่วงที่ฉันพยายาม แต่ฉันได้รับข้อผิดพลาดทางไวยากรณ์ ข่าวสารเกี่ยวกับ 8120 ระดับ 16 สถานะ 1 บรรทัด 2 คอลัมน์ไม่ถูกต้องในรายการที่เลือกเนื่องจากไม่มีอยู่ในฟังก์ชันรวมหรืออนุประโยค GROUP BY เห็นได้ชัดว่าฉันกำลังทำอะไรโง่ ๆ แต่ฉันไม่แน่ใจว่ามีอะไรเกิดขึ้นเมื่อไร 23 13 at 7 54.marcs 476k 101 920 1089.youe ต้องย้ายกลุ่มดังกล่าวโดยเข้าไปในหน้าต่าง function avg var over partition ตามภูมิภาคโดย ahorsewithnoname 23 มี.ค. ที่ 8 41. ก่อน RANGE ทั้งหมดจะได้รับการสนับสนุนเฉพาะกับ UNBOUNDED และ CURRENT ตัวคั่น ROW frame ไม่สามารถใช้กับ N PRECEDING หรือ N FOLLOWING จากชื่อของคุณดูเหมือนว่าคุณต้องการรับค่าเฉลี่ย avg เฉลี่ย 3 เดือนแล้วคุณควรใช้ ROWS โดยใช้ ROWS นี่เป็นสิ่งที่คุณต้องการ SQl Fiddle Demo . หมายเหตุโดยใช้ RANGE หมายเหตุการใช้ RANGE คุณต้องควบคุมความกว้างของพาร์ทิชันเนื่องจากคุณต้องการเพิ่มเป็น 3 เดือนและช่วงไม่สนับสนุน N PRECEDING และ N ต่อไปนี้สนับสนุนเฉพาะที่ต่อไปนี้ 23 มี.ค. ที่ 9 39. ฉันได้อ่านแล้ว การสนทนาที่คุณกล่าวถึงจะใช้กับ PostgreSQL เนื่องจาก i s อนุญาตให้สร้างฟังก์ชันการรวมที่ผู้ใช้กำหนดโดยใช้ SQL ใน PostgreSQL แต่ไม่ได้รับอนุญาตใน SQL Server การใช้ CTE แบบทวนซ้ำเป็นวิธีการที่เป็นไปได้ใน SQL Server แต่ฉันสังเกตเห็นว่าวิธี CTE อาจทำให้เกิดการสแกนตารางมากกว่าฟังก์ชันหน้าต่างดังนั้นฉันจึงสร้างโพสต์นี้ เพื่อถามว่ามีความเป็นไปได้ที่จะคำนวณค่าเฉลี่ยเคลื่อนที่แบบเสวนาโดยใช้ฟังก์ชันหน้าต่าง SQL Server 2012 เช่นเดียวกับการคำนวณค่าเฉลี่ยเคลื่อนที่แบบง่ายๆ xiagao1982 14 เม. ย. ที่ผ่านมา 2 53. ก่อนอื่นคุณคำนวณ EMA SMA x แทน EMA x วินาทีค่าคงที่ที่ราบเรียบของคุณคือ จริงค่าเบต้าในสูตรของฉันไม่ alpha กับทั้งสองเปลี่ยนแปลง SQLFiddle ลักษณะเช่นนี้ แต่ยังคงมีความแตกต่างเล็กน้อยระหว่างผลจริงและผลที่คาดหวังฉันจะกลับไปดูว่าคำนิยาม EMA ของพวกเขาตรงกับฉัน รู้ Sebastian Meine 7 พฤษภาคม 13 ที่ 13 46. ฉันเพียงแค่มองที่สูตรในกระดาษคำนวณที่คุณแนบมาและเป็นวิธีปิดความหมาย EMA มาตรฐานสูตรของฉันคำนวณค่าเฉลี่ยเคลื่อนที่ชี้แจงของ t ล่าสุด en rows สเปรดชีตจะคำนวณค่าเฉลี่ยมาตรฐานในช่วง 10 แถวล่าสุดและค่าเฉลี่ยเคลื่อนที่ที่ถ่วงน้ำหนักแบบยกกำลังสูงที่ไม่ จำกัด สำหรับค่าเฉลี่ยทั้งหมดนี้เป็นไปตามสูตรที่นี่ Sebastian Meine 7 พ. ค. 52 ที่ 13 52 การใช้ค่าเฉลี่ยเคลื่อนที่แบบเรียบเพื่อให้ข้อมูลออกมาเรียบ ค่อนข้างเป็นที่นิยมเทคนิคมันเลวร้ายเกินไปตัวอย่างหลักใน SQL Anywhere วิธีไกลจากง่ายสิ่งที่ทำให้ตัวอย่างที่ซับซ้อนดังนั้นนอกจากคำสั่งปัญหาที่คำนวณค่าเฉลี่ยเคลื่อนที่ของยอดขายผลิตภัณฑ์ทั้งหมดโดยเดือนในปี 2000.Here s สิ่งที่ทำให้การอ้างอิง complex. two สองฟังก์ชั่น AVG GROUP BY ซึ่งทั้งหมดด้วยตัวเองทำให้เพียงเกี่ยวกับการเลือกหัว scratcher ใด ๆ วลีซ่อน WINDOW clause. a ประโยค WINDOW ที่ doesn t แม้ใช้คำหลัก WINDOW เพื่อไม่ได้ฝึกหัด folks ที่ต้องการตัวอย่างมากขึ้นกว่าคนอื่นมันไม่ชัดเจนว่า 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 เป็น CURRENT ROW แถว PRECEDING หนึ่งแถวมีค่า NULL และเมื่อ SQL Anywhere คำนวณ AVG ที่มีค่า NULL จะไม่นับ NULL ที่ไม่มีอยู่ใน เศษหรือในตัวหารเมื่อคำนวณค่าเฉลี่ยนี่คือหลักฐานที่ว่าทำไม twodayaverage 10 000000 สำหรับแถวแรก 2012-02-01 โพสต์โดย Breck Carter ที่ 3 47 PM

No comments:

Post a Comment