Mysql 使用计数(*)和多个GROUP BY的SQL SELECT请求
我目前正在实习,我必须创建一个缺少的视图,这会妨碍网站完美工作 此视图必须包含多个信息,但还必须包含每个耦合状态/进程的行数,如下所示:Mysql 使用计数(*)和多个GROUP BY的SQL SELECT请求,mysql,sql,count,group-by,Mysql,Sql,Count,Group By,我目前正在实习,我必须创建一个缺少的视图,这会妨碍网站完美工作 此视图必须包含多个信息,但还必须包含每个耦合状态/进程的行数,如下所示: +----------------+---------+----------+-----------+-----------+--------+ | status | process | project | idprocess | idproject | number | +----------------+---------+----
+----------------+---------+----------+-----------+-----------+--------+
| status | process | project | idprocess | idproject | number |
+----------------+---------+----------+-----------+-----------+--------+
| Not applicable | AP | tms-data | 17 | 2 | 432 |
| Not applicable | AP+51 | tms-data | 18 | 2 | 432 |
| Not applicable | AR | tms-data | 19 | 2 | 432 |
| Realized | AP | tms-data | 17 | 2 | 432 |
| Realized | AP+51 | tms-data | 18 | 2 | 432 |
| Realized | AR | tms-data | 19 | 2 | 432 |
| Safety | AP | tms-data | 17 | 2 | 432 |
| Safety | AP+51 | tms-data | 18 | 2 | 432 |
| Safety | AR | tms-data | 19 | 2 | 432 |
| Ticket | AP | tms-data | 17 | 2 | 432 |
| Ticket | AP+51 | tms-data | 18 | 2 | 432 |
| Ticket | AR | tms-data | 19 | 2 | 432 |
| To be designed | AP | tms-data | 17 | 2 | 432 |
| To be designed | AP+51 | tms-data | 18 | 2 | 432 |
| To be designed | AR | tms-data | 19 | 2 | 432 |
| Validated | AP | tms-data | 17 | 2 | 432 |
| Validated | AP+51 | tms-data | 18 | 2 | 432 |
| Validated | AR | tms-data | 19 | 2 | 432 |
+----------------+---------+----------+-----------+-----------+--------+
18 rows in set (0.03 sec)
我正在使用MySQL。我不明白为什么这样算数,有什么想法吗
以下是我到目前为止一直在使用的脚本:
SELECT alstom_status.name AS status,
alstom_process.name AS process,
alstom_project.name AS project,
alstom_process.idprocess AS idprocess,
alstom_project.idproject AS idproject,
count(*) AS number
FROM alstom_rule INNER JOIN alstom_status ON idstatus
INNER JOIN alstom_project ON idproject
INNER JOIN alstom_process ON idprocess
GROUP BY alstom_status.name, alstom_process.name
ORDER BY process;
您可以按阿尔斯通公司状态使用集团名称、阿尔斯通公司流程名称、阿尔斯通公司项目名称、阿尔斯通公司流程名称、阿尔斯通公司流程名称、阿尔斯通公司流程名称、阿尔斯通公司项目名称
您可以使用group by alstom_status.name、alstom_process.name、alstom_project.name、alstom_process.Idproces、alstom_project.idproject您需要5个group by而不是2我相信您的group by子句看起来是正确的,但您不应该选择列,除非它们也出现在group by子句中,或者在聚合函数中,比如COUNT,你可能是对的。我们通常会说在y上连接y。some_column=x。some_column或使用some连接y_column@Strawberry是的,事实上我通常不精确,因为在我自己的表中,我更喜欢为不同表的相同列指定相同的名称,但是这里不是idstatus在表规则中命名为status的情况您需要5个group BY而不是2我相信您的group BY子句看起来是正确的,但是您不应该选择列,除非它们也出现在group BY子句中,或者在聚合函数中,比如COUNT,你可能是对的。我们通常会说在y上连接y。some_column=x。some_column或使用some连接y_column@Strawberry是的,事实上我通常不精确,因为在我自己的表中,我更喜欢为不同表的相同列指定相同的名称,但在这里,idstatus在表规则中被命名为status的情况并非如此
This works always for me !
SELECT alstom_status.name AS status,
alstom_process.name AS process,
alstom_project.name AS project,
alstom_process.idprocess AS idprocess,
alstom_project.idproject AS idproject,
count(*) AS number
FROM alstom_rule INNER JOIN alstom_status ON idstatus
INNER JOIN alstom_project ON idproject
INNER JOIN alstom_process ON idprocess
GROUP BY status, process,project,idprocess, idproject;