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

Zliczanie wystąpień słów w kolumnie tabeli

@Elad Meidar, podoba mi się twoje pytanie i znalazłem rozwiązanie:

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. przed wstawieniem wyzwalacza do wstawiania zduplikowanych wierszy do innej tabeli

  2. Wydajny zewnętrzny harmonogram dzięki MySQL i ejabberd

  3. LAST_DAY() Przykłady – MySQL

  4. wybierz wiele wierszy w jednym wierszu wyników

  5. Jak wybrać rekordy ze zduplikowanym tylko jednym polem i wszystkimi innymi wartościami pól?