Sunday 20 August 2017

Oracle sql eksponensial moving average


Jika Anda melihat pesan ini, browser Anda telah menonaktifkan atau tidak mendukung JavaScript. Untuk menggunakan fitur lengkap dari sistem bantuan ini, seperti pencarian, browser Anda harus mengaktifkan JavaScript. Rata-rata Bergerak Tertimbang Dengan Rata-rata Bergerak sederhana, setiap nilai data dalam quotwindowquot dimana perhitungan dilakukan diberi bobot atau bobot yang sama. Hal ini sering terjadi, terutama dalam analisis data harga keuangan, bahwa data kronologis terbaru harus membawa bobot yang lebih besar. Dalam kasus ini, rata-rata Tertimbang Bergerak (atau Eksponensial Moving Average - lihat topik berikut) fungsionalitas sering disukai. Pertimbangkan tabel yang sama dengan nilai data Penjualan selama dua belas bulan: Untuk menghitung Average Moving Average: Hitung berapa banyak interval data yang berpartisipasi dalam perhitungan Moving Average (yaitu ukuran dari perhitungan quotwindowquot). Jika jendela perhitungan dikatakan n, maka nilai data terbaru di jendela dikalikan dengan n, yang paling baru berikutnya dikalikan dengan n-1, nilai sebelum dikalikan dengan n-2 dan seterusnya untuk semua nilai. Di Jendela Bagilah jumlah semua nilai berlipat ganda dengan jumlah bobot untuk memberi Nilai Bergerak Rata-rata di atas jendela itu. Tempatkan nilai rata-rata tertimbang dalam kolom baru sesuai dengan rata-rata pembandingan yang diuraikan di atas. Untuk mengilustrasikan langkah-langkah ini, pertimbangkan apakah Average Average Moving Average Sales pada bulan Desember diperlukan (dengan menggunakan tabel Nilai Penjualan di atas). Istilah quot3-monthquot menyiratkan bahwa perhitungan quotwindowquot adalah 3, oleh karena itu algoritma perhitungan Weighted Moving Average untuk kasus ini seharusnya: Atau, jika rata-rata Moved Moving Average 3 bulan dievaluasi berdasarkan keseluruhan data asli, hasilnya akan menjadi : Moving Moving Average 3 bulan Ini adalah pertanyaan Evergreen Joe Celko. Saya mengabaikan platform DBMS yang digunakan. Tapi bagaimanapun Joe bisa menjawab lebih dari 10 tahun yang lalu dengan SQL standar. Joe Celko SQL Puzzles and Answer citation: Upaya pembaruan terakhir menunjukkan bahwa kita dapat menggunakan predikat untuk membuat kueri yang akan memberi kita rata-rata bergerak: Apakah kolom tambahan atau pendekatan kueri lebih baik Permintaan secara teknis lebih baik karena pendekatan UPDATE akan Denormalize database Namun, jika data historis yang tercatat tidak akan berubah dan menghitung rata-rata bergerak mahal, Anda mungkin mempertimbangkan untuk menggunakan pendekatan kolom. Query SQL Puzzle: dengan segala cara seragam Anda hanya membuang ember yang sesuai tergantung jarak dari titik waktu saat ini. Misalnya quottake weight1 untuk datapoints dalam waktu 24 jam dari datapoint current weight0.5 untuk datapoints dalam 48hrsquot. Kasus itu penting berapa banyak datapoint berurutan (seperti 6:12 dan 11:48) jauh dari satu sama lain Kasus penggunaan yang dapat saya pikirkan akan menjadi upaya untuk memperlancar histogram dimanapun datapoint tidak cukup padat ndash msciwoj 27 Mei di 22:22 Saya tidak yakin hasil yang diharapkan (output) Anda menunjukkan rata-rata bergerak sederhana (bergulir) rata-rata selama 3 hari. Sebab, misalnya, tiga angka pertama menurut definisi memberi: tapi Anda mengharapkan 4.360 dan membingungkannya. Meski begitu, saya menyarankan solusi berikut, yang menggunakan fungsi jendela AVG. Pendekatan ini jauh lebih efisien (jelas dan kurang intensif sumber daya) daripada DIRI-JOIN yang diperkenalkan pada jawaban lain (dan saya terkejut bahwa tidak ada yang memberikan solusi yang lebih baik). Anda melihat bahwa AVG dibungkus dengan kasus ketika rownum gt p. days kemudian memaksa NULL s pada baris pertama, di mana 3 hari Moving Average tidak ada artinya. Jawab 23 Feb 16 at 13:12 Kita bisa menerapkan metode join kiri kiri Joe Celkos (seperti yang dikutip oleh Diego Scaravaggi) untuk menjawab pertanyaan seperti yang ditanyakan. Menghasilkan hasil yang diminta: jawab 9 Jan 09 16 di 0:33 Jawaban Anda 2017 Stack Exchange, IncIm mencoba menerapkan exponential moving average (EMA) pada postgres, namun saat saya memeriksa dokumentasi dan memikirkannya semakin saya mencoba semakin bingung saya. saya. Rumus untuk EMA (x) adalah: Tampaknya sempurna untuk agregator, menjaga hasil dari elemen yang dihitung terakhir adalah persis apa yang harus dilakukan di sini. Namun agregator menghasilkan satu hasil tunggal (sebagai pengurangan, atau lipat) dan di sini kita memerlukan daftar (kolom) hasil (sebagai peta). Saya telah memeriksa bagaimana prosedur dan fungsi bekerja, tapi AFAIK mereka menghasilkan satu output tunggal, bukan kolom. Saya telah melihat banyak prosedur dan fungsi, tapi saya tidak dapat benar-benar mengetahui bagaimana ini berinteraksi dengan aljabar relasional, terutama saat melakukan sesuatu seperti ini, sebuah EMA. Saya tidak beruntung mencari-cari di Internet sejauh ini. Tapi definisi untuk EMA cukup sederhana, saya harap ini mungkin untuk menerjemahkan definisi ini menjadi sesuatu yang bekerja di postgres dan sederhana dan efisien, karena pindah ke NoSQL akan menjadi berlebihan dalam konteks saya. Apakah ini menghitung agregasi yang menghasilkan hasilnya di setiap baris untuk setiap subdaftar data masukan Karena sepertinya menggunakan agregator sampai dengan baris n, mengembalikan hasilnya dan kemudian menuju ke baris 0 untuk menghitung agregasi sampai dengan baris n1 lagi. Apakah ada cara untuk menggunakan akumulasi atau beberapa variabel statis (seperti di C) sehingga ini harus dihitung sekali Terima kasih. Ndash Trylks Jan 20 12 at 11:59 Tidak, ini menggunakan nilai akumulasi. Jika Anda menjalankan kueri dengan perintah kuotasi kuomasi, Anda akan dapat melihat bahwa fungsinya hanya dipanggil satu kali untuk setiap keluaran baris. Postgresql mengeluarkan nilai state pada setiap baris (jika ada finalfunc defined, yang akan dipanggil untuk mengubah state menjadi nilai output). Ndash araqnid Jan 20 12 at 12:04 ErwinBrandstetter: Saya telah mengembalikan sebagian besar perubahan - dalam kasus format anchor pertama) kueri, EMA (x1) dapat ditunjukkan dengan jelas satu baris - ini Corespnds ke satu baris yang mendefinisikannya dalam pertanyaan. Dalam kasus kueri rekursif, saya telah menggunakan mn - 1 dalam kondisi join untuk menunjukkan kesetaraan hubungan dengan EMA (xn-1) dalam pertanyaan, walaupun ini akan menjadi kurang performant jika kinerja adalah sebuah Masalahnya, OP bisa mengubah kondisi join menjadi seperti yang Anda sarankan. Ndash Mark Bannister 16 Januari 12 di 9:27

No comments:

Post a Comment