不同分组依据上的 MySQL sum()

标签 mysql

好的,我要查询两个表。我需要得到两笔款项。我做了一个 group by,所以 sum() 可以正常工作。

SELECT sum(a.x), sum(b.y) FROM a,b GROUP BY a.n where a.n=b.m

到目前为止效果很好,但问题是我需要对第二个总和 (sum(b.y)) 和第一个总和 (sum(a.x)) 进行不同的分组)。

真正的查询有点复杂,但这是我的主要问题。

这就是我实际尝试选择的 sum(stock.amount) - if( sold.amount IS NULL , 0, sum( sold.amount ) )

如何在一个查询中解决这个问题?

最佳答案

由于您没有写下表格,我将进行大胆猜测并假设表格如下:

库存 : id, item_id, amount 已售出 : id, item_id, amount

然后我再次假设您需要 stock_in_total、sold_total、left_total 计数

SELECT 
  stock_sums.item_id, 
  stock_sums.st_sum as stock_in_total,
  COALESCE(sold_sums.so_sum,0) as sold_total,
  (stock_sums.st_sum - COALESCE(sold_sums.so_sum,0)) as left_total
FROM (
  SELECT stock.item_id as item_id, SUM(stock.amount) as st_sum 
  FROM stock 
  GROUP BY item_id
) as stock_sums 
LEFT JOIN (
  SELECT sold.item_id as item_id, SUM(sold.amount) as so_sum 
  FROM sold
  GROUP by item_id
) as sold_sums ON stock_sums.item_id = sold_sums.item_id

希望对您有所帮助。

关于不同分组依据上的 MySQL sum(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5248278/

相关文章:

MySQL - 用户在初始订阅购买的前 6 个月内的每月支出

mysql - 将 SQL 结果与逗号分隔符结合起来

sql - 列中什么时候为空值 "safe"?

mysql_tzinfo_to_sql ORDER BY 错误

python - mysql错误: ERROR 1018 (HY000): Can't read dir of '.' (errno: 13)

mysql - 在 Oracle 中查找时间时为 "day of month must be between 1 and last day of month"

mysql - 如何将状态列中的内容显示为数据库中的标题

php - 在 PHP 中使用动态选项进行选择

Mysql Max 与 Group by 查询

php - 在 Activity 的 "onCreate"方法中从在线 MySQL DB 获取数据