【问题标题】:How to total "AS" column in mysql query?如何在 mysql 查询中总计“AS”列?
【发布时间】:2018-07-05 11:48:32
【问题描述】:

我需要 AS 列“利润”和“购买价格”的总和。我尝试了一些按 stock.id 分组的东西,但它没有给我相同的答案。请告诉我如何收取他们的总和。

SELECT
    jobc_consumble.Stock_id,
    jobc_consumble.issued_qty,
    jobc_consumble.total,
    p_purch_stock.Price,
    p_purch_stock.Price * jobc_consumble.issued_qty AS "purch_price",
    jobc_consumble.total -(SELECT   purch_price) AS "profit"

FROM
    jobc_consumble
INNER JOIN p_purch_stock ON jobc_consumble.stock_id = p_purch_stock.stock_id
WHERE
        DATE_FORMAT(
        jobc_consumble.issue_time,
        '%Y-%m-%d'
    ) BETWEEN '2018-07-03' AND '2018-07-03'

输出应该是这样的:

我想要最后两列的总和。

利润总和:1105

purch_price 的总和:11000

【问题讨论】:

  • 根据查询的 PROFIT 和 purch_price 的总和不过是 SUM(jobc_consumble.total)

标签: mysql inner-join


【解决方案1】:

只需重复 SELECT 子句中的逻辑即可:

SELECT
    j.Stock_id,
    j.issued_qty,
    j.total,
    p.Price,
    p.Price * j.issued_qty AS purch_price,
    j.total - (p.Price * j.issued_qty) AS profit
FROM jobc_consumble j
INNER JOIN p_purch_stock p
    ON j.stock_id = p.stock_id
WHERE
    DATE_FORMAT(j.issue_time, '%Y-%m-%d') = '2018-07-03';

对于某些注释,重复购买价格逻辑的唯一替代方法是将当前查询包装为子查询并重用别名。但是,这可能不会太高效。您的 DATE_FORMAT 表达式没有多大意义,因为范围只是一天。如果您不喜欢我的版本,请告诉我们您真正想要的逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多