【问题标题】:mysql how to mulitply some values in the same column but not others if it meets a conditionmysql如果满足条件,如何将同一列中的某些值相乘,但其他值不相乘
【发布时间】:2019-05-15 06:36:19
【问题描述】:

如果值满足特定条件,是否可以将同一列中的某些值相乘,但不能将其他值相乘?我不想再创建一个列。

我正在处理的查询:

SELECT
    name ,
    ROUND(SUM(orderline_sales.amount * orderline_sales.price) * orders_sales.discount * customers.annual_discount) AS total_revenue
FROM
    orderline_sales 
        JOIN
    orders_sales  ON orders_sales.id = orderline_sales.orders_sales_id
        JOIN
    employee ON orders_sales.empoyee_id = employee.id
        JOIN 
    customers ON orders_sales.customer_id = customers.id
WHERE
    date BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL 365 DAY) AND CURRENT_DATE
GROUP BY employee.name
ORDER BY totale_omzet DESC
LIMIT 1;

orders_sales 表包含一个日期属性类型,orders_sales 表与 orderline_sales 具有 1:n 基数关系。如果订单的年份高于 2017 年,我只想将 SUM 结果与customers.annual_discount 相乘。我该怎么做?

【问题讨论】:

    标签: mysql calculated-field


    【解决方案1】:

    您可以使用 CASE。

      SELECT 
         CASE WHEN YEAR > 2017 THEN
          ROUND(SUM(orderline_sales.amount * orderline_sales.price) * 
      orders_sales.discount * 
            customers.annual_discount)
       ELSE 
       (orderline_sales.price * orders_sales.discount * customers.annual_discount) 
       END  AS total_revenue FROM orderline_sales 
            JOIN
        orders_sales  ON orders_sales.id = orderline_sales.orders_sales_id
            JOIN
        employee ON orders_sales.empoyee_id = employee.id
            JOIN 
        customers ON orders_sales.customer_id = customers.id
       WHERE
          date BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL 365 DAY) AND CURRENT_DATE
         GROUP BY employee.name
       ORDER BY totale_omzet DESC
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-18
      • 2020-07-20
      • 2019-08-12
      相关资源
      最近更新 更多