mysql - 自加入总和字段

标签 mysql join

我有这样的数据 表 t_prod

+---------+----------+-------------+-----------+----------+
|t_prod_id|t_prod_lot|t_prod_sublot|t_prod_card|t_prod_qty|
+---------+----------+-------------+-----------+----------+
|    4    |   R001   |      1      |      1    |   6000   |
|    5    |   R001   |      1      |      2    |   6000   |
|    6    |   R001   |      1      |      3    |   6000   |
|    10   |   R001   |      1      |      4    |   6000   |
|    11   |   R001   |      1      |      5    |   6000   |
|    12   |   R001   |      1      |      6    |   6000   |
|    13   |   R001   |      2      |      1    |   6000   |
|    34   |   R001   |      2      |      2    |   6000   |
|    36   |   R001   |      2      |      3    |   2000   |
+---------+----------+-------------+-----------+----------+

当我选择 t_prod_lot = R001 时,我想要这样的结果。当 t_prod_sublot 值相同时计数 t_prod_sublot,当 t_prod_sublot 值相同时求和 t_prod_qty

+---------+----------+-------------+-----------+----------+--------------------+---------------+
|t_prod_id|t_prod_lot|t_prod_sublot|t_prod_card|t_prod_qty|count(t_prod_sublot)|sum(t_prod_qty)|
+---------+----------+-------------+-----------+----------+--------------------+---------------+
|    4    |   R001   |      1      |      1    |   6000   |          6         |      36000    |
|    5    |   R001   |      1      |      2    |   6000   |          6         |      36000    |
|    6    |   R001   |      1      |      3    |   6000   |          6         |      36000    |  
|    10   |   R001   |      1      |      4    |   6000   |          6         |      36000    |  
|    11   |   R001   |      1      |      5    |   6000   |          6         |      36000    |  
|    12   |   R001   |      1      |      6    |   6000   |          6         |      36000    |  
|    13   |   R001   |      2      |      1    |   6000   |          3         |      14000    |  
|    34   |   R001   |      2      |      2    |   6000   |          3         |      14000    |  
|    36   |   R001   |      2      |      3    |   2000   |          3         |      14000    |  
+---------+----------+-------------+-----------+----------+--------------------+---------------+

生成此结果的查询是什么? Sql Fiddle

最佳答案

下面是一个选项,它使用带有子查询的joincountsum 值:

select *
from t_prod t join (
  select t_prod_lot, t_prod_sublot, 
        count(t_prod_card) t_prod_card_cnt, 
        sum(t_prod_qty) t_prod_qty_sum
  from t_prod
  group by t_prod_lot, t_prod_sublot
) t2 on t.t_prod_lot = t2.t_prod_lot and t.t_prod_sublot = t2.t_prod_sublot

关于mysql - 自加入总和字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38965820/

相关文章:

php - MYSQL 最大行数限制

mysql - (Mysql) 按日期时间范围合并两个表

php - MySQL 连接两个表 ID 以将结果从一个表生成到另一个表

PHP/MYSQL 在数据库上存储大型数据集

mysql - 从 postgresql 迁移到 Mysql

mysql - Hibernate未插入到mysql : showing insert statements

mysql - GROUP_BY、MAX() 和 only_full_group_by

php - 无法在带有 PDO 的 UPDATE 查询中使用 JOIN

mysql - 关系代数查询到 mySQL

php - 删除孤立记录 - mysql