MS Access SQL中的查詢排名

2021-10-07 23:29:40 字數 2369 閱讀 3928

介紹通常會要求對結果進行排名或編號的查詢。 在功能更強大的資料庫管理系統(例如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 可以...