mysql 以 double 显示结果总和

标签 mysql sql group-by

表1 = 项目 表2=销售额

SELECT items.itemcode, items.itemname, 
       sum(items.totalnoofpcs)-ifnull(sum(sales.qty), 0)as sold 
FROM items 
   LEFT JOIN Sales ON items.itemcode = Sales.itemcode 
GROUP BY items.itemcode, items.itemname. 

最佳答案

这是您的查询:

SELECT i.itemcode, i.itemname,
       sum(i.totalnoofpcs)-coalesce(sum(s.qty), 0)as sold
FROM items i LEFT JOIN
     Sales s
     ON i.itemcode = s.itemcode
GROUP BY i.itemcode, i.itemname;

据推测,items 表中的每个 itemcode 一行,因此不会影响结果。合乎逻辑的结论是 totalnoofpcs 是原因 - 它听起来不像是您希望在每次销售中添加的变量。

因此,不要使用 sum(),而是使用 max() 或将其包含在 group by 键中:

SELECT i.itemcode, i.itemname,
       (i.totalnoofpcs - coalesce(sum(s.qty), 0)) as sold
FROM items i LEFT JOIN
     Sales s
     ON i.itemcode = s.itemcode
GROUP BY i.itemcode, i.itemname, i.totalnoofpcs;

关于mysql 以 double 显示结果总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47237503/

相关文章:

mysql - 将 MySQL 查询转换为 PostgreSQL

mysql - 在单个Mysql查询中从不同表中检索数据

android - 进度对话框未完成 - Android

sql - 选择字母范围

mysql - 一个字段中有多个结果

php - 使用 $wpdb->prepare 查询 IN 子句

sql - 在 Sharepoint 中显示 SQL 查询结果

mysql - 每个用户最多显示3笔交易

Pandas - 延长平均 session 时间

MySQl 计数按 4 列分组