如何根據(jù)另一列求和值,減去別名

SQL-Noob here.

有一堆買賣的物品。

我想按item-name分組,得到一個購買和銷售總額。我還想計算庫存的項(xiàng)目。

我嘗試了一個子查詢:

SELECT NAME,
(
    SELECT SUM(quantity)
    FROM transactions
    WHERE `type` = "Buy") AS "purchases",
(
    SELECT SUM(quantity)
    FROM transactions
    WHERE `type` = "Sell") AS "sales"
FROM transactions
GROUP BY NAME

這會導(dǎo)致錯誤的值:

之后我試了CASE-Statements

SELECT NAME,
SUM(CASE WHEN `type` = "Buy" THEN quantity END) AS "purchases",
SUM(CASE WHEN `type` = "Sell" THEN quantity END) AS "sales"
FROM transactions
GROUP BY name

which works:

問題1:有沒有更好的方法來達(dá)到這個結(jié)果?

問題2:如何計算物品的庫存?

purchases - sales AS "Stock"這樣的東西似乎不起作用。

Thanks alot

? 最佳回答:

使用條件聚合:

select name,
    sum(case when type = 'Buy'  then quantity else 0 end) as purchases,
    sum(case when type = 'Sell' then quantity else 0 end) as sales,
    sum(case when type = 'Buy'  then quantity else - quantity end) as stock
from transactions
where type in ('Buy', 'Sell')
group by name

where子句不是必需的,因?yàn)楸碇兄挥羞@些類型。

Side notes:

  • 對文字字符串使用單引號而不是雙引號;這是所有數(shù)據(jù)庫都能理解的標(biāo)準(zhǔn)SQL
  • 在MySQL中,如果需要引用標(biāo)識符而不是雙引號,請使用反撇號;或者更好的是,使用不需要引號的標(biāo)識符
主站蜘蛛池模板: 国产福利电影一区二区三区,日韩伦理电影在线福 | 人妻内射一区二区在线视频| 国产美女av在线一区| 在线观看国产一区二区三区| 性色AV一区二区三区无码| 久久久久成人精品一区二区| 一区二区三区四区精品视频| 久久久久人妻精品一区二区三区| 日韩在线一区视频| 国产一区二区在线|播放| 无码AV动漫精品一区二区免费| 国产精品亚洲一区二区在线观看| 国产成人一区二区动漫精品| 国产成人片视频一区二区| 中文字幕日本一区| 亚洲AV成人一区二区三区在线看| 国产精品日韩一区二区三区| 一区二区三区在线免费观看视频| 国产在线精品一区二区夜色| 亚洲综合一区二区| 国产亚洲综合精品一区二区三区| 精品视频在线观看一区二区 | 日本高清不卡一区| 国产婷婷色一区二区三区深爱网| 国产亚洲一区二区三区在线不卡| 国产精品一区二区久久| 国产福利电影一区二区三区,免费久久久久久久精 | 91精品一区二区三区在线观看| 日韩中文字幕精品免费一区| 在线精品国产一区二区三区| 国产福利微拍精品一区二区| 久久无码人妻精品一区二区三区| 婷婷亚洲综合一区二区| 国产一区二区三精品久久久无广告| 国产成人精品视频一区二区不卡| 国产成人一区二区精品非洲 | 国产一区二区三区免费观在线| 日韩一区二区三区不卡视频| 亚洲熟女www一区二区三区| 国产天堂一区二区综合| а天堂中文最新一区二区三区|