我有一个包含列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新手,任何人都可以指出我正确的方向吗?任何帮助将非常感激。谢谢!