我有,作爲查詢,值的一串不同對的一部分:SQL索引
a d
a e
a f
b g
b h
c i
我想能夠計算計數器相對於第一場的:
a d 1
a e 2
a f 3
b g 1
b h 2
c i 1
我不能使用的位置在臨時表 - 二話不說它會太高,而我需要去不了了2個位數(中值並沒有將是更加超過50個條目與第一個字段相同。是否有任何方法或技術可以幫助?
感謝您的幫助!
我有,作爲查詢,值的一串不同對的一部分:SQL索引
a d
a e
a f
b g
b h
c i
我想能夠計算計數器相對於第一場的:
a d 1
a e 2
a f 3
b g 1
b h 2
c i 1
我不能使用的位置在臨時表 - 二話不說它會太高,而我需要去不了了2個位數(中值並沒有將是更加超過50個條目與第一個字段相同。是否有任何方法或技術可以幫助?
感謝您的幫助!
select t1.c1 , t1.c2 , count(t2.c1) cnt
from mytable t1
join mytable t2 on t1.c1 = t2.c1 and t1.c2 >= t2.c2
group by t1.c1, t1.c2
order by t1.c1, cnt
說明
此查詢假定對(c1,c2)
是獨一無二的。
若要對每行(c1,c2)
進行排名,查詢將計算組c1
中的行數,其中c2
小於或等於c2
。例如,對於(a,e)
,組a
內有2行小於或等於e
(即d
和e
)。
你沒有指定你的DBMS,所以這是ANSI SQL:
select a,
b,
row_number() over (partition by a order by b) as idx
from the_table;
SQLFiddle:http://sqlfiddle.com/#!15/4cf96/1
row_number()
是一個窗口功能,將基於 「分組」 生成一個唯一的號碼,以partition by
子句定義的排序。 Postgres的手冊有一個很好的介紹窗口的功能:http://www.postgresql.org/docs/current/static/tutorial-window.html
這將是比自己快得多
什麼RDBMS您使用的加入? – Barmar
爲了避免混淆,我建議改寫你的問題,因爲_index_在討論數據庫時有着非常明顯的含義。我們將其命名爲_position_或_counter_? – abl
我想你的意思是group_內的_row數字。 – Barmar