Saya memiliki struktur tabel berikut
+ id + word +
+------+--------+
Tabel akan diisi dengan kata-kata di huruf kecil dari teks tertentu, jadi teksnya
Halo selamat tinggal halo
akan menghasilkan
+ id + word +
+------+--------+
+ 1 + hello +
+------+--------+
+ 2 + bye +
+------+--------+
+ 3 + hello +
+------+--------+
Saya ingin membuat kueri SELECT yang akan mengembalikan jumlah kata yang diulang setidaknya dua kali dalam tabel (seperti halo)
SELECT COUNT(id) FROM words WHERE (SELECT COUNT(words.word))>1
yang tentu saja sangat salah dan sangat membebani saat meja besar. Ada ide tentang bagaimana mencapai tujuan tersebut? Dalam contoh yang diberikan di atas, saya mengharapkan 1
Jawaban:
Untuk mendapatkan daftar kata yang muncul lebih dari satu kali beserta frekuensi kemunculannya, gunakan kombinasi GROUP BY dan HAVING:
SELECT word, COUNT(*) AS cnt FROM words GROUP BY word HAVING cnt > 1
Untuk menemukan jumlah kata dalam kumpulan hasil di atas, gunakan itu sebagai subkueri dan hitung baris di kueri luar:
SELECT COUNT(*) FROM ( SELECT NULL FROM words GROUP BY word HAVING COUNT(*) > 1 ) T1
sumber
SELECT count(word) as count FROM words GROUP BY word HAVING count >= 2;
sumber
SELECT word, COUNT(*) FROM words GROUP by word HAVING COUNT(*) > 1
sumber