繁体   English   中英

如何按两个不同的列对 MySQL 查询进行分组?

[英]How do I group a MySQL query by two different columns?

我正在研究的问题是:

提供按省和问题细分的问题的平均答案。 您必须包括省份和问题以及平均值。

示例输出应如下所示:

 Ontario - Do you like blak? - 3.4
 Ontario - Do you like flah? - 2.3
 Ontario - Do you like rahhggg? - 4.8
 Alberta - Do you like flah? - 2.3
 Alberta - Do you like rahhggg? - 4.8

到目前为止,我已经尝试将它们按问题和平均值列出,但我不知道如何首先按省进行分组。 我认为这是一个 JOIN,但我不确定如何布局。 我拥有的:

SELECT survey_question_id, AVG(survey_response)
FROM survey_responses
JOIN survey_responders 
ON survey_responses.id = survey_responders.id
WHERE survey_responders.province='Ontario'
GROUP BY survey_question_id;
SELECT province,survey_question_id, AVG(survey_response)
FROM survey_responses
JOIN survey_responders 
ON survey_responses.id = survey_responders.id
WHERE survey_responders.province='Ontario'
GROUP BY province,survey_question_id;

如果您需要所有省份,只需像这样删除Where

SELECT province,survey_question_id, AVG(survey_response)
FROM survey_responses
JOIN survey_responders 
ON survey_responses.id = survey_responders.id
GROUP BY province,survey_question_id;

MySQL 中的 GROUP BY 语句确定查询引擎如何聚合数据。 您目前仅按survey_question_id 分组。 由于 id 都不同,因此您永远不会在结果中获得聚合。

我建议将您的组更改为:

GROUP BY survey_responders.province, survey_responses.questiontitle 

并确保适当地编辑 SELECT 语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM