sql >> Base de Datos >  >> RDS >> Mysql

Cuente las ocurrencias de una subcadena en una columna MySQL

Esto debería darte una lista de screen_names y el recuento total de todos los hashtags que usan.

SELECT  foo.screen_name, SUM(foo.counts) FROM 
  (
    SELECT screen_name, 
           LENGTH( tweet_text) - LENGTH(REPLACE(tweet_text, '#', '')) AS counts 
    FROM tweet_table 
  ) as foo 
GROUP BY  foo.screen_name

Pero... es una consulta desagradable si la mesa es enorme. Podría especificar usuarios específicos en la selección interna si solo necesita recuentos para un solo usuario. Así:

SELECT  foo.screen_name, SUM(foo.counts) FROM 
 (
    SELECT screen_name, 
         LENGTH( tweet_text) - LENGTH(REPLACE(tweet_text, '#', '')) AS counts 
    FROM tweet_table WHERE  screen_name = 'tweeter_user_1' 
 ) as foo 
GROUP BY  foo.screen_name