この問題に関するあなたの親切な助けは、初心者をプログラミングするために非常に高く評価されます. 過去 3 日間、Google ワールドを検索しようとしましたが、うまくいきませんでした。
背景: 保証データベースの包括的な分析を構築しています。ここでは、チームが調査する必要がある製品グループで優先順位を付けるために、値の 2 つの列を比較する必要があります。これらは; 1.まず故障数による 2.故障数が同数の場合は、次に保証費用による
実行した手順: サブクエリ手法を使用して、必要なものを取得しました。しかし、このルートを使用すると、クエリが完了するまでに時間がかかりました。(11,000 行、文字どおり私のコンプを少なくとも 5 分間フリーズします)。したがって、私はグーグルで検索し、このユーザーが私のものと同じ課題を正確に次のスレッドで話していることを発見しました。わーい!
www.pcreview.co.uk/forums/ranking-performance-slow-t2844316.htmlを参照してください。
私のクエリは彼のクエリと非常に似ていますが、失敗が同点の場合は2列目を比較して、同じグループ内のすべての一意のランクを取得したいと思います。(上記のユーザーは 1 つの列のみを比較し、同点の心配はありません。私のアプリケーションとは異なります)
望ましい出力:
表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 ランキング手法に固執する必要があると思います。
あなたの専門知識は大歓迎です!!