Saya memiliki kueri pemilihan sql yang memiliki grup oleh. Saya ingin menghitung semua catatan setelah grup dengan pernyataan. Apakah ada cara untuk ini langsung dari sql? Misalnya, memiliki tabel dengan pengguna, saya ingin memilih kota yang berbeda dan jumlah total pengguna
select town, count(*) from user
group by town
Saya ingin memiliki kolom dengan semua kota dan lainnya dengan jumlah pengguna di semua baris.
Contoh hasil untuk memiliki 3 kota dan 58 pengguna secara total adalah:
Town Count
Copenhagen 58
NewYork 58
Athens 58
Jawaban:
Ini akan melakukan apa yang Anda inginkan (daftar kota, dengan jumlah pengguna di masing-masing):
Anda dapat menggunakan sebagian besar fungsi agregat saat menggunakan
GROUP BY
.Pembaruan (mengikuti perubahan pertanyaan dan komentar)
Anda dapat mendeklarasikan variabel untuk jumlah pengguna dan mengaturnya ke jumlah pengguna kemudian pilih dengan itu.
sumber
*
... OP menjawab pertanyaannya sendiri, tetapi tampaknya bahkan tidak mengujinya, saya hanya memvalidasi bahwa itu benar :) fredosaurus.com/notes-db/select/groupby.htmlAnda bisa menggunakan
COUNT(DISTINCT ...)
:sumber
town
kolom, dan ituCOUNTs
salah (kota bukan pengguna).Cara lainnya adalah:
sumber
Dengan Oracle Anda dapat menggunakan fungsi analitik:
Pilihan Anda yang lain adalah menggunakan subquery:
sumber
Jika Anda ingin memesan berdasarkan hitungan (terdengar sederhana tetapi saya tidak dapat menemukan jawaban di tumpukan cara melakukan itu) yang dapat Anda lakukan:
sumber
Sepuluh jawaban yang tidak dihapus; kebanyakan tidak melakukan apa yang diminta pengguna. Sebagian besar Jawaban salah membaca pertanyaan dengan berpikir bahwa ada 58 pengguna di masing-masing kota alih-alih total 58. Bahkan beberapa yang benar pun tidak optimal.
SHOW session status LIKE 'Handler%';
Dalam konteks OP:
Karena hanya ada satu baris dari
tot
, barisCROSS JOIN
ini tidak seberat yang seharusnya.Pola yang biasa adalah
COUNT(*)
bukannyaCOUNT(town)
. Yang terakhir menyiratkan memeriksatown
untuk tidak nol, yang tidak perlu dalam konteks ini.sumber
Anda dapat menggunakan DISTINCT di dalam COUNT seperti yang dikatakan milkovsky
dalam kasus saya:
Ini akan menarik jumlah suara jawaban yang dianggap sama dengan user_id sebagai satu hitungan
sumber
Saya tahu ini adalah posting lama, di SQL Server:
sumber
IFNULL
bukanISNULL
) mengarah ke nomor yang berbeda untuk setiap kota; pengguna menginginkan total. Menurut Pertanyaan, 58, bukan 174, adalah total.Jika Anda ingin memilih kota dan jumlah total pengguna, Anda dapat menggunakan pertanyaan ini di bawah ini:
sumber
User
.jika Anda ingin menggunakan Select All Query With Count Option, coba ini ...
sumber
Coba kode berikut:
sumber