【发布时间】:2014-08-16 02:04:03
【问题描述】:
上下文
我在将子查询的逻辑(?)放在一起时遇到了一些麻烦。
*---------*---------*---------*------------*------------*---------*
|GUEST_ID | Country | County | Attending | Donation | Party |
*---------*---------*---------*------------*------------*---------*
我有一个数据库,其中包含有关慈善舞会参加者的记录。
GUEST_ID:表键。
国家:客人来自的国家。
县:客人来自的县(即该国家/地区的某个地区)。
出席:客人是否出席(即真或假)。
捐款:客人为这项事业捐款的金额。
派对:客人参加的派对。
目标
我希望显示一个按国家和县划分的表格,显示来自每个国家 + 县的参加者人数,以及来自该国家 + 国家的参加者的平均捐款。然后我想从最高平均捐赠到最低排序。我了解此查询的组成部分,但是我不确定如何将其作为一个整体“粘合”在一起。
我可以GROUP BY Country, County。
我可以SUM(Donation)。
我可以COUNT(*) WHERE ATTENDING = 'Yes'
而且我知道我可以SET @variables 临时存储结果。
我也知道我可以ORDER BY DESC。
到目前为止
我的问题是如何理解如何将这些元素组合成一个有效的查询。我猜我需要使用子查询,但是它得到了正确的顺序,我遇到了麻烦。这就是我目前所拥有的 -
SELECT SUM(`Donation`) AS `TotalDonations`, `Country`, `County`
FROM `GuestList`
WHERE `Party` = `2014CharityBall`
GROUP BY `Country`, `County`
我不知道如何添加子查询以找到只有那些肯定参加的客人的COUNT,或者如何计算 TotalDonations /definiteAttending 然后ORDER BY 这个。
需要结果
*------------*------------*---------------*---------------*---------------*
| Country | County | # of Attendees|Total Donations|Avg. Donation |
*------------*------------*---------------*---------------*---------------*
国家/地区:客人来自的国家/地区。
县:客人来自的县(即该国家/地区的某个地区)。
参加人数:该国家和县的参加人数(参加人数 = 'true')。
捐款总额:该国家和县(例如SUM(Donation))内所有参加(参加 = 'true')的人的捐款总额。
平均捐款:该国家和县内所有参加者的平均捐款(Attending = 'true')(例如 AVG(Donation) - 即 ofc,捐款总额 / 参加者人数)。
额外积分
只是一个表达式;)
如果我想计算受邀参加派对的所有捐赠者的总捐赠额,以及单独计算参加派对的捐赠者的捐赠总额,如何我这样做?
【问题讨论】:
-
是的,抱歉。我还是很新。我将添加正确的标签。谢谢。
-
只是戳一下,您是否还需要同一结果集中每个国家/地区的总总额?
-
@Serpiton 我已将所需的结果添加到我的问题中
-
完美,但我之前提出的问题有所不同:您是否还需要每个国家/地区的总数,不考虑县?
-
啊,是的,对不起,我的错误。不,我不需要每个国家/地区:)