gpt4 book ai didi

mysql - 使用 `group by` 获得所需结果的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-29 06:51:47 34 4
gpt4 key购买 nike

这是我要查询的表的结构:

------------------------------------------------------------------
| UserId | ExperimentId | TaskId | TaskName | Errors | FileKey |
-----------------------------------------------------------------
| 12 | 10 | 8 | Jumping | 9 | 1200298 |
-----------------------------------------------------------------
| 12 | 10 | 8 | Jumping | 7 | 1200297 |
-----------------------------------------------------------------
| 12 | 10 | 8 | Jumping | 6 | 1200296 |
-----------------------------------------------------------------
| 12 | 10 | 8 | Jumping | 8 | 1200295 |
-----------------------------------------------------------------
| 12 | 10 | 6 | Writing | 9 | 1200294 |
-----------------------------------------------------------------
| 12 | 10 | 6 | Writing | 2 | 1200293 |
-----------------------------------------------------------------
| 12 | 10 | 6 | Writing | 0 | 1200292 |
-----------------------------------------------------------------
| 12 | 10 | 8 | Pointing | 9 | 1200291 |
-----------------------------------------------------------------
| 12 | 10 | 8 | Pointing | 8 | 1200290 |
-----------------------------------------------------------------
| 12 | 10 | 8 | Pointing | 7 | 1200289 |
------------------------------------------------------------------

我正在使用的查询:

select
UserId,
TaskName,
sum(Errors) as Errors
from
UserTaskStats
where
TaskName = TaskName
and
UserId = UserId
group by
Errors, TaskName
order by
UserId asc;

我得到的结果示例(忽略 Errors 列中值的准确性):

--------------------------------
| UserId | TaskName | Errors |
--------------------------------
| 12 | Jumping | 3 |
--------------------------------
| 12 | Jumping | 3 |
--------------------------------
| 12 | Writing | 8 |
--------------------------------
| 12 | Jumping | 8 |
--------------------------------
| 12 | Writing | 6 |
--------------------------------
| 12 | Writing | 6 |
--------------------------------
| 12 | Pointing | 6 |
--------------------------------
| 12 | Pointing | 8 |
--------------------------------
| 12 | Jumping | 8 |
--------------------------------
| 12 | Writing | 8 |
--------------------------------

我想要的结果:

---------------------------------
| UserId | TaskName | Errors |
--------------------------------
| 12 | Jumping | 30 |
--------------------------------
| 12 | Writing | 11 |
--------------------------------
| 12 | Pointing | 24 |
---------------------------------

我没有正确使用 group by 吗?有没有其他方法可以得到想要的结果?

最佳答案

你们很亲密。

您希望每个 UserId, TaskName 组都有一行,因此只需要按 UserId, TaskName 分组即可

SELECT UserId,
TaskName,
sum(Errors) AS Errors
FROM UserTaskStats
GROUP BY UserId,
TaskName
ORDER BY UserId ASC;

SQL Fiddle

关于mysql - 使用 `group by` 获得所需结果的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14914304/

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