Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySql:Policz, ile razy słowa występują w kolumnie

Oto rozwiązanie tylko przy użyciu zapytania:

SELECT SUM(total_count) as total, value
FROM (

SELECT count(*) AS total_count, REPLACE(REPLACE(REPLACE(x.value,'?',''),'.',''),'!','') as value
FROM (
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.sentence, ' ', n.n), ' ', -1) value
  FROM table_name t CROSS JOIN 
(
   SELECT a.N + b.N * 10 + 1 n
     FROM 
    (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
   ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
    ORDER BY n
) n
 WHERE n.n <= 1 + (LENGTH(t.sentence) - LENGTH(REPLACE(t.sentence, ' ', '')))
 ORDER BY value

) AS x
GROUP BY x.value

) AS y
GROUP BY value

Oto pełne działające skrzypce:http://sqlfiddle.com/#!2/17481a/ 1

Najpierw wykonujemy zapytanie, aby wyodrębnić wszystkie słowa, jak wyjaśniono tutaj przez @peterm (postępuj zgodnie z jego instrukcjami, jeśli chcesz dostosować całkowitą liczbę przetwarzanych słów). Następnie konwertujemy to na podzapytanie, a następnie COUNT i GROUP BY wartość każdego słowa, a następnie wykonaj kolejne zapytanie do GROUP BY słowa niezgrupowane przypadki, w których mogą występować znaki towarzyszące. czyli:cześć =cześć! z REPLACE



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Powolne dołączanie. Każdy sposób na przyspieszenie

  2. Wybierz TOP X (lub dolny) procent dla wartości liczbowych w MySQL

  3. Różne wyniki w sqlfiddle.com 5.5.30 i MariaDB 5.5.31

  4. Co to jest schemat bazy danych?

  5. Aktualizacja wielu wierszy z różnymi wartościami