我正在尝试运行一个查询,该查询对part_number的重复发生进行计数,将其分组并显示输出。
我只想以降序显示前5个条目(行)。
这是我的代码供参考。
SELECT TOP 5
part_log.part_number,
COUNT(part_log.part_number) AS CountOfpart_number
FROM part_log
GROUP BY part_log.part_number
ORDER BY Count(part_log.part_number) DESC;
例如,如果我有8个零件编号,但值各不相同,但第5行的值与第6、7和8个相同,那么它将吐出下面的数据,而不仅仅是剪切它在第5行关闭。
p/n: 5 occ:10
p/n: 6 occ:7
p/n: 2 occ:5
p/n: 3 occ:4
p/n: 1 occ:2
p/n: 4 occ:2
p/n: 7 occ:2
p/n: 8 occ:2
我不希望零件号从具有相同值的零件中吐出来,我只希望检索5行。
删除ORDER BY函数仅给我5行,但忽略了我需要的降序值。
对此的任何帮助将不胜感激。
如何在ORDER BY
子句中添加第二个条件?
ORDER BY Count(part_log.part_number) DESC, part_log.part_number;
由于您要按part_number
分组,因此保证值在结果集中是唯一的,这使此列成为打破联系的理想选择。
MS Access将TOP
视为TOP WITH TIES
。也就是说,有联系时,它将继续返回相等的值。
简单的解决方案是添加一个额外的密钥。在这种情况下,要添加的显而易见的键是GROUP BY
键-因为您知道每行将是唯一的:
SELECT TOP 5 pl.part_number,
COUNT(*) AS CountOfpart_number
FROM part_log as pl
GROUP BY pl.part_number
ORDER BY Count(*) DESC, pl.part_number;