SQL:查找用户

时间:2017-01-16 19:49:55

标签: sql sql-server frequency

我有一个包含列ID,CHAT_ID,USERNAME,MONTH,DAY,YEAR,STATUS的表。 [my_table] [1] [1]:https://i.stack.imgur.com/5XjM2.png

状态包含用户的推文。现在我试图通过用户名找到状态列分组的单词频率,即,我需要创建一个新表,显示用户使用特定单词的次数。该表需要包含用户名,字和频率列。 我使用以下查询来查找状态列

上的单词频率
select sep.col AS WORD, count(*) as Frequency from
(
select * from 
(
select value = Lower
(RTrim
(LTrim
    (convert(VARCHAR(MAX), STATUS))
)) FROM My_table
) easyValues
        Where value <> '' 
    ) actualValues 
    Cross Apply dbo.SeparateValues(value, ' ') sep
    Group By USERNAME,sep.col 
    Order By Count(*) Desc

dbo。 SeparateValues()是一个表值函数

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Function [dbo].[SeparateValues]    

(    
 @data VARCHAR(MAX),    
 @delimiter VARCHAR(10)     
)     
RETURNS     
@tbldata TABLE(col VARCHAR(MAX))    
As    
--Declare @data VARCHAR(MAX) ,@delimiter VARCHAR(10)     
--Declare @tbldata TABLE(col VARCHAR(10))    
--Set @data = 'hello,how,are,you?,234234'    
--Set @delimiter = ','    
--DECLARE @tbl TABLE(col VARCHAR(10))    
Begin    
DECLARE @pos INT    
DECLARE @prevpos INT    
SET @pos = 1     
SET @prevpos = 0    

WHILE @pos > 0     
BEGIN    
SET @pos = CHARINDEX(@delimiter, @data, @prevpos+1)    
if @pos > 0     
INSERT INTO @tbldata(col) VALUES(LTRIM(RTRIM(SUBSTRING(@data, @prevpos+1, @pos-@prevpos-1))))    
else    
INSERT INTO @tbldata(col) VALUES(LTRIM(RTRIM(SUBSTRING(@data, @prevpos+1, len(@data)-@prevpos))))    
SET @prevpos = @pos     
End    

RETURN       
END

我是从网上得到的。 但我无法找到用户使用该词的次数。我是SQL新手,任何人都可以指出我正确的方向吗?任何帮助将非常感激。谢谢!

0 个答案:

没有答案