Saya punya meja siswa:
id | age
--------
0 | 25
1 | 25
2 | 23
Saya ingin menanyakan semua siswa, dan kolom tambahan yang menghitung berapa banyak siswa dengan usia yang sama:
id | age | count
----------------
0 | 25 | 2
1 | 25 | 2
2 | 23 | 1
Apa cara paling efisien untuk melakukan ini? Saya khawatir sub-permintaan akan lambat, dan saya bertanya-tanya apakah ada cara yang lebih baik . Disana?
sql
performance
Assaf Lavie
sumber
sumber
Jika Anda menggunakan Oracle, maka fitur yang disebut analytics akan berhasil. Ini terlihat seperti ini:
Jika Anda tidak menggunakan Oracle, maka Anda harus bergabung kembali ke penghitungan:
sumber
Ini solusi lain. ini menggunakan sintaks yang sangat sederhana. Contoh pertama dari solusi yang diterima tidak berfungsi pada versi Microsoft SQL yang lebih lama (yaitu 2000)
sumber
Saya akan melakukan sesuatu seperti:
sumber
sumber
dan jika data dalam kolom "usia" memiliki catatan yang sama (yaitu banyak orang berusia 25 tahun, banyak lainnya berusia 32 tahun dan seterusnya), hal itu menyebabkan kebingungan dalam menyelaraskan jumlah yang tepat untuk setiap siswa. untuk menghindarinya, saya bergabung dengan tabel pada ID siswa juga.
sumber