de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 serkan
serkan
Question

Bagaimana saya bisa menggunakan SUM() OVER()

Saya tidak dapat memahami kode ini' bug

ID      AccountID       Quantity
1          1               10           Sum = 10
2          1               5                = 10 + 5 = 15
3          1               2                = 10 + 5 + 2 = 17
4          2               7                = 7
5          2               3                = 7 + 3 = 10  

SELECT ID, AccountID, Quantity, 
       SUM(Quantity) OVER (PARTITION BY AccountID ) AS TopBorcT, 
FROM tCariH
18 2012-04-06T05:18:06+00:00 3
Willi Mentzel
Willi Mentzel
Pertanyaan edit 27 April 2015 в 11:24
Pemrograman
sql
sum
Andriy M
Andriy M
6 April 2012 в 8:22
2012-04-06T08:22:18+00:00
Lebih
Sumber
Sunting
#15872758

Sepertinya Anda mengharapkan kueri untuk mengembalikan total yang berjalan, tetapi itu pasti memberi Anda nilai yang sama untuk kedua partisi AccountID.

Untuk mendapatkan total berjalan dengan SUM() OVER (), anda perlu menambahkan sub-klausa ORDER BY setelah PARTITION BY ..., seperti ini:

SUM(Quantity) OVER (PARTITION BY AccountID ORDER BY ID)

Tapi ingat, tidak semua sistem database mendukung ORDER BY dalam klausa OVER dari fungsi window aggregate. (Misalnya, SQL Server tidak mendukungnya sampai versi terbaru, SQL Server 2012).

27
0
 UV.
UV.
29 Mei 2013 в 3:24
2013-05-29T03:24:01+00:00
Lebih
Sumber
Sunting
#15872759

jika Anda menggunakan SQL 2012, Anda harus mencoba

SELECT  ID, 
        AccountID, 
        Quantity, 
        SUM(Quantity) OVER (PARTITION BY AccountID ORDER BY AccountID rows between unbounded preceding and current row ) AS TopBorcT, 
FROM tCariH

jika tersedia, urutan yang lebih baik berdasarkan kolom tanggal.

8
0
 AjaySharma2061
AjaySharma2061
9 Desember 2015 в 9:36
2015-12-09T09:36:30+00:00
Lebih
Sumber
Sunting
#15872760

Pertanyaan akan seperti ini:

SELECT ID, AccountID, Quantity, 
       SUM(Quantity) OVER (PARTITION BY AccountID ) AS TopBorcT 

       FROM #Empl ORDER BY AccountID

Partisi berdasarkan bekerja seperti grup berdasarkan. Di sini kita mengelompokkan berdasarkan AccountID sehingga jumlah akan sesuai dengan AccountID.

Kasus pertama, AccountID = 1, maka sum(quantity) = 10 + 5 + 2 => 17 & Untuk AccountID = 2, maka sum(Quantity) = 7+3 => 10

sehingga hasilnya akan muncul seperti terlampir snapshot.

 xan
xan
Jawaban edit 9 Desember 2015 в 9:55
2
0
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
UbiBot UK
Terdaftar 15 jam yang lalu
2
Галина Утяшова
Terdaftar 1 hari yang lalu
3
Asilbek Qadamboyev
Terdaftar 4 hari yang lalu
4
Akshit Mehta
Terdaftar 1 minggu yang lalu
5
me you
Terdaftar 1 minggu yang lalu
ID
JA
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi