您对这个问题的亲切帮助将非常感谢编程菜鸟。我试图搜索谷歌世界过去 3 天,但没有运气。
背景: 我正在构建保修数据库的综合分析,我必须在其中比较两列值,以便我们团队需要调查的产品组中的优先级。这些是; 1. 首先是故障次数 2. 当故障次数相同时,其次是保修成本
采取的步骤: 我使用了子查询技术来获得我想要的东西。但是使用这条路线查询完成太慢了。(11,000 行,字面上冻结我的 comp 至少 5 分钟)。因此,我在谷歌上搜索并发现该用户在以下线程中与我的问题完全相同,幸运的是使用 INNER JOIN 技术解决了问题,而不是其他专家的回答。耶!
请参考www.pcreview.co.uk/forums/ranking-performance-slow-t2844316.html
好吧,除了.....我的查询与他的非常相似,但我也想在失败并列时比较第二列,从而获得同一组中所有人的唯一排名。(上面的用户只比较一列,不关心关系,不像我的应用程序)
期望的输出:
表格1。
Part Failures Cost Desired-Rank
A 10 $5 1
A 5 $3 3
A 5 $20 2
B 5 $10 2
B 5 $5 3
B 9 $2 1
到目前为止我的查询
SELECT Count(*) AS Rank, dupe.Part, dupe.Failures, dupe.Cost
FROM [Table1] AS dupe
INNER JOIN [Table1] AS dupe1
ON dupe.Part = dupe1.Part and
dupe.Failures <= dupe1.Failures and dupe.Cost<=dupe1.Cost
Group By dupe.Part, dupe.Failures, dupe.Cost;
and dupe.Cost<=dupe1.Cost
过去几天我试图在没有真正了解编程基础的情况下调整该部分。(我主要是通过复制别人的代码来学习,并在看到输出后尝试理解它)
请注意,我认为我必须坚持这种 JOIN 排名技术,因为它极大地减少了查询时间与子查询
非常感谢您的专业知识!!