获取MySQL中GROUP BY结果的百分比值

获取MySQL中GROUP BY结果的百分比值,mysql,sql,group-by,Mysql,Sql,Group By,我正在处理调查数据。基本上,我想计算一个位置的一个问题的总回答数,然后使用该总数来创建每个特定回答在所有回答中所占的百分比。然后我想按位置对结果进行分组 理想的输出类似于此: Q1 |州|市|% 是的|妈|博斯| 10 不| MA | bos | 40 m、 |马|博| 50 是的|妈|坎| 20 编号| MA | cam | 20 m、 |马|坎| 80 我遇到的问题是,我相信GROUPBY在我的count语句之前工作,所以我无法计算所有的响应。下面是我必须生成实数的示例: SELECT q1

我正在处理调查数据。基本上,我想计算一个位置的一个问题的总回答数,然后使用该总数来创建每个特定回答在所有回答中所占的百分比。然后我想按位置对结果进行分组

理想的输出类似于此:

Q1 |州|市|%

是的|妈|博斯| 10

不| MA | bos | 40

m、 |马|博| 50

是的|妈|坎| 20

编号| MA | cam | 20

m、 |马|坎| 80

我遇到的问题是,我相信GROUPBY在我的count语句之前工作,所以我无法计算所有的响应。下面是我必须生成实数的示例:

SELECT q1, state, city, COUNT(q1) FROM master GROUP BY state, city, q1
并非所有问题都有答案,因此下面是我获取百分比的尝试:

SELECT q1, state, city, count(q1)/(count(nullif(q1,0))) as percent FROM master group by state, city, q1

我相信使用或过度使用。。。这可能是一条可行的途径,但我两条都无法实现。

我认为查询需要分为两部分。一个用于获取每个州+城市的计数,另一个用于获取每个州+城市+Q1的计数。然后将这两个查询合并在一起,并对合并的结果进行计算。也许有比这更优雅的解决方案,但沿着这些思路可能会奏效。对任何打字错误表示歉意

GROUP BY state, city, COUNT(q1)
select t1.q1, t1.state, t1.city, ResponseCount, 100.0 * ResponseCount/CityCount as "%" from (select q1, state, city, count(q1) as ResponseCount from master group by state, city, q1) t1 join (select state, city, count(*) as CityCount from master group by state, city) t2 on t2.State = t1.State and t2.City = t1.City
希望这有帮助

谢谢你,杰夫。如果我按countq1分组,我不认为这会帮助我获得每个问题的总回答,然后用countq1作为对照。而不是countq1,我想要countq1/total\u responses\u per\u这个位置,或者类似的东西。还是我让事情复杂化了?这将是两个不同的选择标准上的不同集合,这就是特雷弗的回答。