Thursday 10 August 2017

Moving Average In Sql Server 2008


Saya mencoba untuk memiliki kolom rata-rata berjalan dalam pernyataan SELECT berdasarkan kolom dari baris sebelumnya dalam pernyataan SELECT yang sama Rata-rata yang saya butuhkan didasarkan pada baris sebelumnya di resultset. 3 baris pertama kolom Rata-rata Adalah null karena tidak ada baris sebelumnya Baris 4 di kolom rata-rata menunjukkan rata-rata kolom Number dari 3 baris sebelumnya. Saya memerlukan bantuan untuk membuat pernyataan SQL Select yang akan melakukan ini. Bergabung sederhana akan terlihat Untuk melakukan jauh lebih baik daripada subquery referensi baris. Generasi 10k baris data uji. Aku akan menarik kasus khusus dari 3 baris pertama dari kueri utama, Anda dapat UNION SEMUA orang kembali jika Anda benar-benar menginginkannya di baris set Bergabunglah dengan kuantum. Di mesin saya, ini membutuhkan waktu sekitar 10 detik, pendekatan subquery yang ditunjukkan Aaron Alton membutuhkan waktu sekitar 45 detik setelah saya mengubahnya untuk mencerminkan tabel sumber pengujian saya. Jika Anda melakukan SET STATISTIK PROFILE ON, Anda dapat melihat diri bergabung Memiliki 10 k mengeksekusi pada ta Ble spool Subquery memiliki 10 k mengeksekusi pada filter, agregat, dan langkah-langkah lainnya. Saya bekerja dengan SQL Server 2008 R2, mencoba untuk menghitung rata-rata bergerak Untuk setiap record dalam pandangan saya, saya ingin mengumpulkan nilai dari 250 sebelumnya. Catatan, dan kemudian menghitung rata-rata untuk pemilihan ini. Lihat kolom saya adalah sebagai berikut. TransactionID itu unik Untuk setiap TransactionID saya ingin menghitung rata-rata untuk nilai kolom, dari 250 catatan sebelumnya Jadi untuk TransactionID 300, kumpulkan semua nilai dari sebelumnya 250 Tampilan baris diurutkan berdasarkan TransactionID dan kemudian di kolom MovAvg tuliskan hasil rata-rata nilai-nilai ini yang ingin saya kumpulkan data dalam kisaran rekor. Ikuti 28 Oktober di 20 58.AVG Transact-SQL. ALL Menerapkan agregat Berfungsi untuk semua nilai ALL adalah default. DISTINCT Menentukan bahwa AVG hanya dilakukan pada setiap instance unik dari suatu nilai, berapa pun nilainya terjadi. Ekspresi Merupakan ekspresi dari angka atau perkiraan yang tepat. Kategori tipe data numerik, kecuali tipe data bit Fungsi agregat dan subqueries tidak diijinkan. Partisi partisi byclause orderbyclause partitionbyclause membagi set hasil yang dihasilkan oleh FROM clause menjadi partisi dimana fungsi diterapkan Jika tidak ditentukan, fungsi memperlakukan semua baris dari Hasil query yang ditetapkan sebagai satu kelompok orderbyclause menentukan urutan logis dimana operasi dilakukan orderbyclause diperlukan Untuk informasi lebih lanjut, lihat OVER Clause Transact-SQL. Tipe pengembalian ditentukan oleh jenis hasil ekspektasi expression. decimal category. P, s. Jika tipe data ekspresi adalah tipe data alias, tipe pengembalian juga tipe data alias Namun, jika tipe data dasar tipe data alias dipromosikan, misalnya dari tinyint ke int nilai kembali Adalah tipe data yang dipromosikan dan bukan tipe data alias. AVG menghitung rata-rata seperangkat nilai dengan membagi jumlah nilai tersebut dengan jumlah nilai nonnull If Jumlah melebihi nilai maksimum untuk tipe data dari nilai pengembalian kesalahan akan dikembalikan. AVG adalah fungsi deterministik bila digunakan tanpa klausa OVER dan ORDER BY Hal ini nondeterministic bila ditentukan dengan klausa OVER dan ORDER BY Untuk informasi lebih lanjut, Lihat Fungsi Deterministik dan Nondeterministik. Menggunakan fungsi SUM dan AVG untuk perhitungan. Contoh berikut menghitung jam liburan rata-rata dan jumlah jam cuti sakit yang digunakan oleh wakil presiden dari Adventure Works Cycles Masing-masing fungsi agregat menghasilkan satu ringkasan Nilai untuk semua baris yang diambil Contoh menggunakan database AdventureWorks2012.

No comments:

Post a Comment