介紹通常會要求對結果進行排名或編號的查詢。 在功能更強大的資料庫管理系統(例如microsoft sql和db2)中,通常具有執行此操作的功能。 但是,在microsoft access中,不存在這樣的功能。
選件在access中,有幾種解決方法:
報告中的累計金額
select子句中呼叫的vba**
select子句中的子查詢
select子句中的dcount
將表連線到自身並使用count
如果要連續對行編號,則選項1可能是最簡單的,但在選項中靈活性最低。
選項2、3和4要求每行分別進行評估,對於大型資料集可能會比較慢。
選項5是最難理解的,但通常效率最高。 這是我將在本文中討論的選項。
例子給出下表和資料:
id salesperson division numbersold
1 robert electronics 99
2 jenny electronics 54
對於第乙個示例,假設您要按已售出的商品數量對所有推銷員進行排名,您可以將**與已售出的商品數量結合起來並進行計數。
詢問
select
t1.salesperson,
t1.division,
t1.numbersold,
count(*) + 1 as rank
from
tblsales as t1
left join tblsales as t2
on t1.numbersold < t2.numbersold
group by
t1.salesperson,
t1.division,
t1.numbersold
結果salesperson division numbersold rank
robert electronics 99 2
jenny electronics 54 3
注意,這給平局相同的等級。
如果要對行編號而不是對行進行排名,則需要使用唯一字段。
詢問
select
t1.salesperson,
t1.division,
t1.numbersold,
count(*) as rank
from
tblsales as t1
left join tblsales as t2
on t1.numbersold < t2.numbersold or
(t1.numbersold = t2.numbersold and
t1.id <= t2.id)
group by
t1.salesperson,
t1.division,
t1.numbersold
結果salesperson division numbersold rank
robert electronics 99 2
jenny electronics 54 4
如果要按分組字段劃分排名或編號,可以通過將它們包括在join子句中來實現。
詢問
select
t1.salesperson,
t1.division,
t1.numbersold,
count(*) as rank
from
tblsales as t1
left join tblsales as t2
on t1.division = t2.division and
t1.numbersold <= t2.numbersold
group by
t1.salesperson,
t1.division,
t1.numbersold
結果salesperson division numbersold rank
robert electronics 99 1
jenny electronics 54 2
請注意,此排名從最高到最低。
從最低到最高僅需要將小於運算子轉換為大於運算子。
翻譯自:
linux中的查詢
無論在哪個作業系統,查詢都是常用操作,本文說一下linux中的查詢。1.find find最常用,引數也一大把,舉個最常用的 find type f name c exec grep l 這個就是在當前目錄 查詢所有含有 字串的c程式原始檔,通過這個例子,大家應該會用了。find功能很強大,有興趣自...
SQL Server中的查詢
本博文簡單介紹一下sql server中常用的幾類查詢及相關使用的方法。一 executescalar方法獲取單一值 executescalar方法是sqlcommand類的方法之一,執行查詢,並返回查詢所返回的結果集中的第一行第一列。csharp view plain copy print cla...
django查詢中的 in
rackid request.post rackid retdir rackid rackid racks rack.objects.filter rackid icontains rackid equipments equipment.objects.filter rack in racks 可以...