sql - 如何从 MySQL 中为每 n 条记录求和

标签 sql mysql

我有以下查询结果:

+---------------+------+------+------+------+------+------+------+-------+
| order_main_id | S36  | S37  | S38  | S39  | S40  | S41  | S42  | total |
+---------------+------+------+------+------+------+------+------+-------+
|            26 |  127 |  247 |  335 |  333 |  223 |  111 |   18 |  1394 | 
|            26 |  323 |  606 |  772 |  765 |  573 |  312 |  154 |  3505 | 
|            38 |   25 |   35 |   35 |   35 |   20 | NULL | NULL |   150 | 
|            38 |   25 |   35 |   35 |   35 |   20 | NULL | NULL |   150 | 
|            39 |   65 |   86 |   86 |   42 |   21 | NULL | NULL |   300 | 
|            39 |   42 |   58 |   58 |   28 |   14 | NULL | NULL |   200 | 
|            35 |   11 |   20 |   21 |   18 |    9 |    2 | NULL |    81 | 
|            35 |   10 |   25 |   30 |   23 |   12 |    1 | NULL |   101 | 
+---------------+------+------+------+------+------+------+------+-------+

我想在输入不同的 order_main_id 之前插入一个 SUM,它会像这样的结果:

+---------------+------+------+------+------+------+------+------+-------+
| order_main_id | S36  | S37  | S38  | S39  | S40  | S41  | S42  | total |
+---------------+------+------+------+------+------+------+------+-------+
|            26 |  127 |  247 |  335 |  333 |  223 |  111 |   18 |  1394 | 
|            26 |  323 |  606 |  772 |  765 |  573 |  312 |  154 |  3505 |
|               |  450 |  853 | 1107 | 1098 |  796 |  423 |  172 |  4899 | 
|            38 |   25 |   35 |   35 |   35 |   20 | NULL | NULL |   150 | 
|            38 |   25 |   35 |   35 |   35 |   20 | NULL | NULL |   150 |
|               |   50 |   70 |   70 |   70 |   40 | NULL | NULL |   300 | 
|            39 |   65 |   86 |   86 |   42 |   21 | NULL | NULL |   300 | 
|            39 |   42 |   58 |   58 |   28 |   14 | NULL | NULL |   200 |
|               |  107 |  144 |  144 |   70 |   35 | NULL | NULL |   500 | 
|            35 |   11 |   20 |   21 |   18 |    9 |    2 | NULL |    81 | 
|            35 |   10 |   25 |   30 |   23 |   12 |    1 | NULL |   101 |
|               |   21 |   45 |   51 |   41 |   21 |    3 | NULL |   182 | 
+---------------+------+------+------+------+------+------+------+-------+

如何做到这一点?

最佳答案

您需要编写第二个使用 GROUP BY order_main_id 的查询。

类似于:

SELECT sum(S41+...) FROM yourTable GROUP BY orderMainId

K

关于sql - 如何从 MySQL 中为每 n 条记录求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1346117/

相关文章:

MySQL 仅选择最近位置(如果也是最新位置)

mysql - 奇怪的行为mysql查询

mysql - 对于我在特定表中尝试的每个 INSERT 查询,键 'PRIMARY' 的重复条目

c# - 图片不在 Chrome 和 FF 上显示

php - 将日期插入具有三个字段的数据库 PHP SQL

mysql - 如何在join where中访问外表数据

python - 未实现错误: Operator 'getitem' is not supported on this expression

mysql - SQL - 如何替换/修改多行中的字符串?

mysql - 从 Ruby 中的表中获取所有值

mysql - Laravel Eloquent : order results by field in related table