Mysql
 sql >> база данни >  >> RDS >> Mysql

Преброяване на думите в колона на таблицата

@Elad Meidar, харесвам въпроса ти и намерих решение:

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

Ето пълната работеща цигулка:http://sqlfiddle.com/#!2/17481a/ 1

Първо правим заявка, за да извлечем всички думи, както е обяснено тук от @peterm (следвайте инструкциите му, ако искате да персонализирате общия брой обработени думи). След това преобразуваме това в подзаявка и след това COUNT и GROUP BY стойността на всяка дума и след това направете още една заявка отгоре към GROUP BY случаи на негрупирани думи, при които може да има придружени знаци. т.е.:здравей =здравей! с 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. Как да извлечем уникални редове въз основа на комбинации от стойности на колони?

  2. Как да вмъкна моментно JS време в MySQL

  3. Направен е опит да се прочете миналия край на грешката в потока в MySQL

  4. Хвани изключение за вмъкване на дублиран ключ

  5. MySQL REPLACE() – Заменете всички екземпляри на подниз с друг низ