다음과 같은 테이블 구조가 있습니다.
+ id + word +
+------+--------+
테이블은 주어진 텍스트의 소문자로 된 단어로 채워 지므로 텍스트는
안녕 안녕 안녕
결과적으로
+ id + word +
+------+--------+
+ 1 + hello +
+------+--------+
+ 2 + bye +
+------+--------+
+ 3 + hello +
+------+--------+
테이블에서 두 번 이상 반복되는 단어 수를 반환하는 SELECT 쿼리를 만들고 싶습니다 (예 : hello).
SELECT COUNT(id) FROM words WHERE (SELECT COUNT(words.word))>1
물론 테이블이 클 때 너무 잘못되고 과부하가 걸립니다. 그러한 목적을 달성하는 방법에 대한 아이디어가 있습니까? 위의 주어진 예에서 1
답변
발생 빈도와 함께 두 번 이상 나타나는 단어 목록을 얻으려면 GROUP BY 및 HAVING의 조합을 사용하십시오.
SELECT word, COUNT(*) AS cnt
FROM words
GROUP BY word
HAVING cnt > 1
위의 결과 집합에서 단어 수를 찾으려면이를 하위 쿼리로 사용하고 외부 쿼리의 행을 계산합니다.
SELECT COUNT(*)
FROM
(
SELECT NULL
FROM words
GROUP BY word
HAVING COUNT(*) > 1
) T1
답변
SELECT count(word) as count
FROM words
GROUP BY word
HAVING count >= 2;
답변
SELECT word, COUNT(*) FROM words GROUP by word HAVING COUNT(*) > 1