iT邦幫忙

0

[SQL]用次數來顯示排名

sql

各位大大,我想要把關鍵字搜尋次數做一個排名
並且由多至少
請問有什麼方法呢?
我用Rank()都會報錯...
以下是我原本的寫法,沒有加排名

https://ithelp.ithome.com.tw/upload/images/20210921/20137810XK9Yi5KDUs.jpg

請問我該怎麼樣能夠再加一個排名Column呢?

rogeryao iT邦大師 1 級 ‧ 2021-09-26 20:47:04 檢舉
MySQL ? 哪一版 ?
Rank()都會報錯 ? 錯誤訊息是啥 ?
0
小魚
iT邦大師 1 級 ‧ 2021-09-21 17:25:09

應該可以用 ROW_NUMBER()

感謝!沒想到有這語法

5
一級屠豬士
iT邦大師 1 級 ‧ 2021-09-21 17:43:04

你原本的查詢變成子查詢,以下是隨手寫的,不見得是正確的,你參考看看

select keyword, cnt, rank() over(order by cnt desc)
  from (select keyword, count(*) as cnt
          from tbl
         group by keyword) a;
4
rogeryao
iT邦大師 1 級 ‧ 2021-09-21 18:15:54
CREATE TABLE webkeyword (
keyword varchar(20));

INSERT INTO webkeyword (keyword)
VALUES 
('BB'),
('BB'),
('BB'),
('CC'),
('CC'),
('CC'),
('CC'),
('AA'),
('AA'),
('AA'),
('AA'),
('AA'),
('DD');
SELECT RANK() OVER (ORDER BY COUNT(1) DESC) AS '排名',
keyword AS '關鍵字',COUNT(1) AS '次數'
FROM webkeyword
GROUP BY keyword

Demo

2
海綿寶寶
iT邦大神 1 級 ‧ 2021-09-22 09:25:27

1.參考這篇
2.之前問的問題,如果已解決的話,選個最佳解答以結案

哦哦!好的,之前那題正規表達有幫到我!
我回去去結案?

1
純真的人
iT邦大師 1 級 ‧ 2021-09-22 09:58:55

我也來插一腳(逃...

declare @Tmp table(
	Str nvarchar(50)
)

insert into @Tmp
values(N'中囯')
,(N'中囯')
,(N'中囯')
,(N'中囯')
,(N'中囯')
,(N'中囯')
,(N'Java')
,(N'Java')
,(N'Java')
,(N'貓魚')

select Row_Number()Over(order by count(0) desc) Sort
,Str
,count(0) Num
from @Tmp
group by Str

https://ithelp.ithome.com.tw/upload/images/20210922/20061369zbxofFpZJ7.png

不錯啊!

我要發表回答

立即登入回答