gpt4 book ai didi

mysql - 如何对查询结果使用子查询,然后对每行的计算结果进行 ORDER BY?

转载 作者:行者123 更新时间:2023-11-29 07:58:54 24 4
gpt4 key购买 nike

上下文

我在头脑中将子查询(?)的逻辑组合在一起时遇到了一些麻烦。

   *---------*---------*---------*------------*------------*---------*
|GUEST_ID | Country | County | Attending | Donation | Party |
*---------*---------*---------*------------*------------*---------*

我有一个数据库,其中包含有关慈善舞会参加者的记录。

GUEST_ID:表键。
国家:客人来自的国家/地区。
:客人来自的县(即该国家/地区的某个地区)。
出席:客人是否出席(即真或假)。
捐款:客人为该事业捐款的金额。
派对:客人正在参加哪个派对。


目标

我希望显示一个按国家和县分割的表格,显示来自每个国家+县的与会者人数,以及来自该国家+国家的与会者的平均捐款。然后,我想对这些行进行从最高平均捐赠到最低的排序。我理解这个查询的组成部分,但是我不确定如何将其作为一个整体“粘合”在一起。

我可以按国家/地区、县进行分组

我可以SUM(捐赠)

我可以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/DefinitelyAttending,然后ORDER BY这个。


需要结果

*------------*------------*---------------*---------------*---------------*
| Country | County | # of Attendees|Total Donations|Avg. Donation |
*------------*------------*---------------*---------------*---------------*

国家/地区:客人所在的国家/地区。
:客人来自的县(即该国家/地区的某个地区)。
参加者人数:该国家/地区和县内的参加者人数(出席 = 'true')。
捐款总额:该国家和县内所有参加者(出席 = 'true')的捐款总额(例如 SUM(Donation))。
平均。捐赠:该国家和县内所有参加者(参加 = 'true')的平均捐赠(例如 AVG(Donation) - 即 ofc,总捐赠/参加者人数) .


额外积分

只是一个表达式;)

如果我想计算受邀参加聚会的所有捐助者的总捐款,以及仅计算参加聚会的捐助者的总捐款,如何计算我这样做?

最佳答案

    SELECT `Country`, 
`County`,
SUM(`Donation`) AS `TotalDonations`,
FORMAT(AVG(`Donation`), 0) AS `AVGDonations`,
COUNT(1) Attending
FROM `GuestList`
WHERE `Party` = `2014CharityBall`
AND Attending = `Yes`
GROUP BY `Country`, `County`
Order by 4 desc

关于mysql - 如何对查询结果使用子查询,然后对每行的计算结果进行 ORDER BY?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24409850/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com