gpt4 book ai didi

mysql - 在查询中正确使用 COUNT 函数来获取百分比 (MySQL)

转载 作者:行者123 更新时间:2023-11-28 23:35:10 24 4
gpt4 key购买 nike

这可能在其他地方得到了回答,但由于缺乏适当的知识,我无法正确使用它。

我有以下(简化的)表格:

users
-id
-country

group_selections
-id
-user_id
-group_id
-rank

我目前正在像这样进行 INNER JOIN:

SELECT
`group_id`, `country`
FROM `group_selections` AS `GroupSelection`
JOIN `users` AS `User`
ON (`GroupSelection`.`user_id` = `User`.`id`)
GROUP BY `country`
ORDER BY `group_id`, `country`

返回的行如下:

| group_id |   country |
|----------|-----------|
| 1 | Spain |
| 1 | USA |
| 2 | Canada |
| 2 | Chile |
| 2 | USA |
| 2 | Venezuela |
| 3 | Australia |
| 3 | Canada |
| 3 | China |
| 3 | USA |
| 4 | Spain |

本质上,我需要的是得到这样的东西:

| group_id |   country | percentage_country |
|----------|-----------|--------------------|
| 1 | Spain | 0.50 |
| 1 | USA | 0.50 |
| 2 | Canada | 0.25 |
| 2 | Chile | 0.25 |
| 2 | USA | 0.25 |
| 2 | Venezuela | 0.25 |
| 3 | Australia | 0.25 |
| 3 | Canada | 0.25 |
| 3 | China | 0.25 |
| 3 | USA | 0.25 |
| 4 | Spain | 1.00 |

无非是每个国家的用户选择特定群组的百分比(用户可以选择多个群组加入)。

SQLFiddle here

要说明原因:在我的应用程序中,我试图根据用户所在的国家/地区为他们提供优势,因此如果一个国家/地区的用户(想要加入群组的用户)多于另一个国家/地区,则用户较少的国家/地区在选择它们时具有优势。

这看起来非常简单,但我无法让它发挥作用。请帮忙?

最佳答案

尝试以下解决方案,SQLFidle 为:http://sqlfiddle.com/#!9/8c228/35

SELECT
`GroupSelection`.`group_id`, `country`, COUNT(`country`)/`GroupCount`.member_cnt as `percentage_country`
FROM `group_selections` AS `GroupSelection`
JOIN `users` AS `User`
ON (`GroupSelection`.`user_id` = `User`.`id`)
JOIN (SELECT gs.`group_id`, COUNT(*) AS `member_cnt`
FROM `group_selections` AS gs
GROUP BY gs.`group_id`) `GroupCount`
ON (`GroupSelection`.`group_id` = `GroupCount`.`group_id`)
GROUP BY `country`, `group_id`
ORDER BY `group_id`, `country`

关于mysql - 在查询中正确使用 COUNT 函数来获取百分比 (MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35979162/

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