Tengo la siguiente estructura de tabla
+ id + word +
+------+--------+
La tabla se llena con las palabras en minúsculas de un texto dado, por lo que el texto
Hola adios hola
resultaría en
+ id + word +
+------+--------+
+ 1 + hello +
+------+--------+
+ 2 + bye +
+------+--------+
+ 3 + hello +
+------+--------+
Quiero hacer una consulta SELECT que devolverá la cantidad de palabras que se repiten al menos dos veces en la tabla (como hola)
SELECT COUNT(id) FROM words WHERE (SELECT COUNT(words.word))>1
lo cual, por supuesto, es tan incorrecto y sobrecargado cuando la mesa es grande. ¿Alguna idea de cómo lograr tal propósito? En el ejemplo dado inherente arriba, esperaría 1
Respuestas:
Para obtener una lista de las palabras que aparecen más de una vez junto con la frecuencia con la que ocurren, use una combinación de GROUP BY y HAVING:
Para encontrar el número de palabras en el conjunto de resultados anterior, utilícelo como una subconsulta y cuente las filas en una consulta externa:
fuente
fuente
SELECT word, COUNT(*) FROM words GROUP by word HAVING COUNT(*) > 1
fuente