mysql多计数并与WHERE求和

时间:2011-04-18 21:28:26

标签: mysql case

我正在尝试构建查询来检查我的库存。

SELECT COUNT(*) AS item_count,
reseller_id, sum(sold) as
sold_count, sum(refunded) as
refunded_count,**sum(case price when
refunded <> 1 AND sold=1) as pricesum** FROM stock
GROUP BY
reseller_id ORDER BY sold_count ASC

上述查询将选择所有项目,并由每个经销商将其分配总项目和退款计数。粗体部分是错误的我想得到总价(这是每个经销商没有退款+销售的总和(通过经销商ID注明i组)

3 个答案:

答案 0 :(得分:2)

使用case语句的这样的东西可能会起作用:

SUM(CASE
    WHEN refunded <> 1 AND sold = 1
        THEN price
    ELSE
        0
    END)

答案 1 :(得分:1)

我注意到的事情:

  • 你还没有结束你的案子。这是通过写“end”
  • 来完成的
  • 你没有给出其他案例

答案 2 :(得分:0)

尝试制作子查询,如:

SELECT SUM(price) FROM stock WHERE refunded != 1 AND sold = 1

完整的查询如下所示:

SELECT
  COUNT(*) AS item_count,
  reseller_id,
  SUM(sold) as sold_count,
  SUM(refunded) as refunded_count,
  (SELECT SUM(price) FROM stock WHERE refunded != 1 AND sold = 1 WHERE reseller_id=1 GROUP BY reseller_id) as pricesum
FROM stock
WHERE reseller_id=1
GROUP BY reseller_id
ORDER BY sold_count ASC