2016-08-04 6 views
2

私は、レースなどでスポーツ選手のベストタイムを見つけるクエリを持っています。私のクエリは、個人的なベストタイムとは別に、すべてのレースを基本的に除外します。私の質問の人数をカウントする

私は、彼らは私が誰かを助けることができることを望んので、これを行う方法のまわりで私の頭を取得カントレースで他の人の上に

を完了している種族の%を表示したい、これは私のコードです:

SELECT tblSourceData.Athlete, Max(tblSourceData.Swim) AS MaxOfSwim, Max(tblSourceData.Bike) AS MaxOfBike, Max(tblSourceData.Run) AS MaxOfRun, Count(tblSourceData.Athlete) AS EventsCompleted 
    FROM tblSourceData 
    WHERE (((tblSourceData.Gender)="f")) 
    GROUP BY tblSourceData.Athlete 
    HAVING (((Count(tblSourceData.Athlete))>=5)); 
私のテーブルで

私の行は、次のとおりです。

Athlete 
Swim 
Run 
Bike 
Date 
Gender 

コメントから--------さらに追加情報-----------

現時点で

私のクエリは例として、このようなものを示しています

Name  Swim  Bike  Run  CompletedEvents  % 
Dave  43:22 11:23  32:34   46 
John  43:23 31:24  11:43   12 

私は

は事前に

+0

とは何ですか?あなたのテーブルのすべての行はレースですか? –

+0

"あなたがレースで他の人よりも完走したレースの割合"。あなたはそれについてもっと情報を与えることができますか? –

+0

サンプルデータと予想される出力を追加してください。 – Saurabh

答えて

0

てみてください、ありがとうございレースを完了し、すべての選手の平均の割合を知りたいですこれは:

SELECT tblSourceData.Athlete, 
(SELECT Max(tblSourceData.Swim) from tblSourceData) AS MaxOfSwim, 
(SELECT Max(tblSourceData.Bike) from tblSourceData) AS MaxOfBike, 
(SELECT Max(tblSourceData.Run) from tblSourceData) AS MaxOfRun, 
Count(tblSourceData.Athlete) AS EventsCompleted 
FROM tblSourceData 
WHERE (((tblSourceData.Gender)="f")) 
GROUP BY tblSourceData.Athlete 
HAVING (((Count(tblSourceData.Athlete))>=5)); 

希望します。

+0

ロード時間と実行時間は増加しませんか? – Saurabh

+0

これはうまくいきませんでした – dmorgan20

0

あなたが望むのは、完成したすべてのレースを合計してすべてのユーザーのパーセンテージを計算するのに、SUM()を使用する必要がある場合は、すべてのレースの中から選んだ選手の完成レースのパーセンテージです。テストできませんでした。仕事:

SELECT tblSourceData.Athlete as Athlete, 
     Max(tblSourceData.Swim) AS MaxOfSwim, 
     Max(tblSourceData.Bike) AS MaxOfBike, 
     Max(tblSourceData.Run) AS MaxOfRun, 
     Count(tblSourceData.Athlete) AS EventsCompleted, 
     ROUND((100*Count(tblSourceData.Athlete)/(SELECT SUM(b.eventsCompleted) FROM (  
      SELECT COUNT(tblSourceData.Athlete) AS EventsCompleted FROM tblSourceData 
      WHERE tblSourceData.Gender="f" 
      GROUP BY tblSourceData.Athlete 
      HAVING Count(tblSourceData.Athlete)>=5 
     ) AS b)),2) AS `percentage` 
     FROM tblSourceData 
     WHERE tblSourceData.Gender="f" 
     GROUP BY tblSourceData.Athlete 
     HAVING Count(tblSourceData.Athlete)>=5 
+0

残念なことに、これは仕事をしません – dmorgan20

+0

@david私はそれが今すぐokでなければならない私のクエリを更新しました。 –

関連する問題