计算我的查询中的人数
Posted
技术标签:
【中文标题】计算我的查询中的人数【英文标题】:Counting number of people in my query 【发布时间】:2016-08-04 09:26:29 【问题描述】:我有一个查询,可以找到运动员在比赛等方面的最佳时间。我的查询基本上过滤掉了除个人最佳时间之外的所有比赛。
我想显示他们在比赛中比其他人完成的比赛的百分比
我不知道如何做到这一点,所以希望有人能提供帮助,这是我的代码:
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
我想知道完成比赛的所有运动员的平均百分比
提前谢谢你
【问题讨论】:
什么是种族?你桌子上的每一行都是一场比赛?您必须提供更多信息,以便我们为您提供帮助 “他们在比赛中完成的比赛的百分比超过了其他人”。你也能提供更多信息吗??? 请添加一些示例数据和预期输出 “我想知道平均百分比” 那么如果戴夫游泳的最佳时间是 43:22,而平均时间是 41:15,你想知道百分比是多少? 抱歉,我不擅长解释 - 我想计算已完成事件的百分比和查询中列出的运动员人数。因此,在我的示例中,Dave 完成了 46 个事件,而查询中只有两个人。希望这是有道理的 【参考方案1】:试试这个:
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));
希望对你有帮助!
【讨论】:
不会增加负载和执行时间吗?【参考方案2】:如果您想要的是每个运动员完成的比赛在所有比赛中的百分比,您只需要使用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
【讨论】:
@david 我更新了我的查询现在应该没问题了。你可以再试一次以上是关于计算我的查询中的人数的主要内容,如果未能解决你的问题,请参考以下文章
如何计算使用 Cloud Firebase 在 Swift UI 中选择一个选项的人数?