Select 来自 table 类别的最大值
Select max value from table by category
Bought X times
Name
Manufacturer
19
Олівець Faber-Castell, Castell 9000 F
FaberCastell
14
Набір акрилових глянцевих фарб C. Kreul El Greco 18 кольорів
Kreul
10
Набір акварельних фарб "Класика", ROSA Gallery, 12кол.
ROSA GROUP
7
Професійний акварельний пензлик Winsor & Newton - One Stroke
Winsor & Newton
6
Ластик електричний Derwent
Derwent
6
Гумка Koh-i-Noor 300/80 Слон
Koh-I-Noor
5
Набір маркерів Copic Sketch Set Skin Tones, 6 шт
Copic
4
Склейка для акварелі Derwent Inktense 300г 20л
Derwent
4
Пастель Van Gogh Royal Talens 60 кольорів
Royal Talens
4
Блокнот American Crafts Journal Studio
American Crafts
3
Кольорові олівці Prismacolor Premier 72 кольору в металевому пеналі
Prismacolor
我创建了一个查询,它生成的结果与上述类似。
而且,如您所见,有两行包含 Derwent 作为制造商。我想只留下每个制造商的行,其中“购买 X 次”(一列,由 Count() 生成)是最大的。我怎样才能做到这一点?
结果,我想得到
Bought X times
Name
Manufacturer
19
Олівець Faber-Castell, Castell 9000 F
FaberCastell
14
Набір акрилових глянцевих фарб C. Kreul El Greco 18 кольорів
Kreul
10
Набір акварельних фарб "Класика", ROSA Gallery, 12кол.
ROSA GROUP
7
Професійний акварельний пензлик Winsor & Newton - One Stroke
Winsor & Newton
6
Ластик електричний Derwent
Derwent
6
Гумка Koh-i-Noor 300/80 Слон
Koh-I-Noor
5
Набір маркерів Copic Sketch Set Skin Tones, 6 шт
Copic
4
Пастель Van Gogh Royal Talens 60 кольорів
Royal Talens
4
Блокнот American Crafts Journal Studio
American Crafts
3
Кольорові олівці Prismacolor Premier 72 кольору в металевому пеналі
Prismacolor
查询:
SELECT Count(Goods.Contract) AS [Bought X times], Goods.Goods_name AS [Name], Producer.Company AS [Manufacturer]
FROM Producer INNER JOIN (Goods INNER JOIN [Goods-Check] ON Goods.Goods_code= [Goods-Check].Goods_code) ON Producer.Contract= Producer.Contract
GROUP BY Goods.Goods_name, Producer.Company
ORDER BY Count(Goods.Contract) DESC;
一个老式的解决方案是过滤具有更大值的另一行的行 not exists
:
SELECT *
FROM Query1 AS t
WHERE NOT EXISTS (
SELECT 1
FROM Query1 AS x
WHERE x.Manufacturer = t.Manufacturer
AND x.[Bought X times] > t.[Bought X times]
)
这是标准的 SQL,不确定它是否适用于 MS Access。
Bought X times | Name | Manufacturer |
---|---|---|
19 | Олівець Faber-Castell, Castell 9000 F | FaberCastell |
14 | Набір акрилових глянцевих фарб C. Kreul El Greco 18 кольорів | Kreul |
10 | Набір акварельних фарб "Класика", ROSA Gallery, 12кол. | ROSA GROUP |
7 | Професійний акварельний пензлик Winsor & Newton - One Stroke | Winsor & Newton |
6 | Ластик електричний Derwent | Derwent |
6 | Гумка Koh-i-Noor 300/80 Слон | Koh-I-Noor |
5 | Набір маркерів Copic Sketch Set Skin Tones, 6 шт | Copic |
4 | Склейка для акварелі Derwent Inktense 300г 20л | Derwent |
4 | Пастель Van Gogh Royal Talens 60 кольорів | Royal Talens |
4 | Блокнот American Crafts Journal Studio | American Crafts |
3 | Кольорові олівці Prismacolor Premier 72 кольору в металевому пеналі | Prismacolor |
我创建了一个查询,它生成的结果与上述类似。 而且,如您所见,有两行包含 Derwent 作为制造商。我想只留下每个制造商的行,其中“购买 X 次”(一列,由 Count() 生成)是最大的。我怎样才能做到这一点? 结果,我想得到
Bought X times | Name | Manufacturer |
---|---|---|
19 | Олівець Faber-Castell, Castell 9000 F | FaberCastell |
14 | Набір акрилових глянцевих фарб C. Kreul El Greco 18 кольорів | Kreul |
10 | Набір акварельних фарб "Класика", ROSA Gallery, 12кол. | ROSA GROUP |
7 | Професійний акварельний пензлик Winsor & Newton - One Stroke | Winsor & Newton |
6 | Ластик електричний Derwent | Derwent |
6 | Гумка Koh-i-Noor 300/80 Слон | Koh-I-Noor |
5 | Набір маркерів Copic Sketch Set Skin Tones, 6 шт | Copic |
4 | Пастель Van Gogh Royal Talens 60 кольорів | Royal Talens |
4 | Блокнот American Crafts Journal Studio | American Crafts |
3 | Кольорові олівці Prismacolor Premier 72 кольору в металевому пеналі | Prismacolor |
查询:
SELECT Count(Goods.Contract) AS [Bought X times], Goods.Goods_name AS [Name], Producer.Company AS [Manufacturer]
FROM Producer INNER JOIN (Goods INNER JOIN [Goods-Check] ON Goods.Goods_code= [Goods-Check].Goods_code) ON Producer.Contract= Producer.Contract
GROUP BY Goods.Goods_name, Producer.Company
ORDER BY Count(Goods.Contract) DESC;
一个老式的解决方案是过滤具有更大值的另一行的行 not exists
:
SELECT *
FROM Query1 AS t
WHERE NOT EXISTS (
SELECT 1
FROM Query1 AS x
WHERE x.Manufacturer = t.Manufacturer
AND x.[Bought X times] > t.[Bought X times]
)
这是标准的 SQL,不确定它是否适用于 MS Access。