我的行數表像查找每個值
Name
A
B
B
C
C
C
A
A
B
B
我需要查詢像
Name count
A 1
B 2
C 3
A 2
B 2
我試圖與秩()返回輸出,DENSE_RANK()。但我不能夠得到輸出
我的行數表像查找每個值
Name
A
B
B
C
C
C
A
A
B
B
我需要查詢像
Name count
A 1
B 2
C 3
A 2
B 2
我試圖與秩()返回輸出,DENSE_RANK()。但我不能夠得到輸出
在我看來這個問題它不投下它,它很有趣,反正讓我們去解決方案。
爲了對名稱進行分組並獲得每個分隔組中的名稱計數,帶有分組函數或窗口函數的簡單計數函數不能解決您的問題,我傾向於使用兩個輔助字段,一個用於行號,其他適用於組數的值,你會通過你的表迭代,提高組字段的值的下一個名字,如果它是不一樣的電流:
假設你的表是:
create table tblN (Name varchar(10))
insert into tblN values
('A'),
('B'),
('B'),
('C'),
('C'),
('C'),
('A'),
('A'),
('B'),
('B');
以下查詢爲以上說明:
;with cte1 as(
select 1 gp,name -- add gp for group number
from tblN
),
cte2 as(
select gp,name,
row_number() over(order by gp) rn --add rn for evaluating groups
from cte1
),
cte3 as(
select gp,name,rn from cte2 where rn=1
union all
select case --evaluate groups
when c2.name=c3.name then c3.gp
else c3.gp+1
end gp,
c2.name,c2.rn
from cte3 c3
join cte2 c2 on c3.rn+1=c2.rn
)
select gp,name from cte3 --[1]
結果:
gp name
1 A
2 B
2 B
3 C
3 C
3 C
4 A
4 A
5 B
5 B
現在在上面的查詢,而不是線[1]只使用下面的查詢:
select name , count from(
select top 1000 gp,name,
count(name) count
from cte3
group by gp,name
order by gp) q
結果:
name count
A 1
B 2
C 3
A 2
B 2
我同意這不是微不足道的問題,沒有downvote,但OP沒有提供任何專欄訂購項目。 您的解決方案是錯誤的,因爲**沒有保證**第一個子查詢爲了將它們放入表中而給出行。 如果訂購的列被提供,他們是不同的,增加 - 解決方案是可能的,你的是其中之一,非常相似[http://stackoverflow.com/questions/29849314/how-to-dense-rank-最近問及回答了價值套重複)。 –
@PonderStibbons,'1.'如果你覺得帖子不是或者是好的,有用的,你可以自由地投降或投票。 ''2.你提到的問題不是很相似。 ''我的解決方案沒有錯,請在測試它之前先告訴它。 '4。「這種解決方案恰好適用於沒有排序條件的列,不要以爲我們總是需要有一個列進行排序。 5,你告訴_that第一個子查詢給出了行,以便將它們放入table_中,這是正確的,希望子查詢應該這樣做。無論如何,我歡迎您的評論。祝你好運。 – jfun
1)我會2)他們是3)是錯誤的,因爲沒有保證的順序,否則我會upvote它4)唯一的選擇是rowid,這是致命的5),但從我們知道哪一行放在第一位? –
可以實現您的要求非常簡單,以下查詢
SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY NAME ORDER BY NAME) AS COUNT,NAME FROM TABLENAME)T ORDER BY 1,2
嗨kumar ..你試過這個查詢或不嘗試你會得到準確的結果..你你不喜歡這個帖子可以請解釋 – ganesh
到目前爲止您嘗試過什麼?顯然,我們不想浪費你的時間來表明你已經嘗試了很多東西。請相應地編輯您的問題。 –
這非常簡單。谷歌搜索給你很多例子,像http://www.w3resource.com/sql/aggregate-functions/count-with-group-by.php。請閱讀http://stackoverflow.com/help/how-to-ask。在我們嘗試幫助您之前,您應該嘗試幫助您自己 –
按行排序的行是什麼?你怎麼確定前2個B是一個組,最後2個是不同組? – Mureinik