【发布时间】:2013-05-03 23:05:11
【问题描述】:
您对这个问题的慷慨帮助将非常感谢您编程菜鸟。 过去 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 排名技术,因为它极大地减少了查询时间与子查询
非常感谢您的专业知识!
【问题讨论】: