私はMYSQLを使用しており、ランキングの目的でMYSQLの能力の範囲内で作業しようとしています。
私のクエリは次のとおりです。
SELECT petz.s_name,
petz.breed,
a.num,
sum(a.rank) AS rank
FROM wins_conf a
JOIN
(SELECT DISTINCT rank
FROM wins_conf
ORDER BY rank DESC LIMIT 10) b ON a.rank = b.rank
JOIN petz ON a.num=petz.num
GROUP BY petz.num
ORDER BY petz.breed,
rank DESC
結果を返します:
sum(Rank)
INSANITY'S ACE OF SPADES Collie 1026 58
INSANITY'S SAVE ME Collie 1000 31
STAR GAZER'S BEAUTIFUL LIES Collie 1039 24
BANYON'S ALL IS FORGIVEN Collie 1009 19
FELIXTOWE CHERRY BLOSSOM Collie 1214 18
KE'S PRICELESS FIGUREINE Collie 1004 13
NOVABLUE'S LOVES UNENDING LEGACY Collie 1211 12
STAR GAZER'S WARRIOR OF MY HEART Collie 1059 9
INSANITY'S BE MINE Collie 1028 9
STAR GAZER'S A WILDCAT'S REVENGE Collie 1040 5
KE'S TRICKS OF THE TRADE Collie 1005 5
record 1059 (STAR GAZER'S WARRIOR OF MY HEART) はランクとして 9 を返しますが、sum() されている DB 内のレコードに基づいて 12 になるはずです
Rank
conf 33 13 1059 Best of Breed 0 0 5 0 2
conf 78 3139 1059 Best of Breed 0 0 4 0 2
conf 82 2518 1059 Best of Breed 0 0 1 0 2
conf 81 13 1059 Best in Specialty0 0 1 0 2
conf 79 13 1059 Best of Breed 0 0 1 0 2
いくつかの調査で、1が4以上の場合、ランク列のsum()の最後の3レコードのみが表示されることがわかりました
これを修正する方法について何か提案はありますか?
AgRizzo への返信での編集/更新 読みやすくするために完全な名前と品種を削除しました。これが私が望んでいるものです。ランクを表示したいのですが、重複していますが、10 (重複を含む) のみです。
num rank
1 1026 58
2 1000 31
3 1039 24
4 1009 19
4 1214 19
5 1004 13
6 1211 12
6 1059 12
7 1028 9
8 1005 5
8 1040 5
9 1010 3
10 1276 1
ここでいくつかの基本データを設定します: http://sqlfiddle.com/#!2/7e2992 上記のように綿毛のコンテンツの一部が欠けていますが、そのコンテンツはランキング内では必要ありません。