mysql, как мультиплексировать некоторые значения в той же самой колонке, но не другие, если это встречает условие - PullRequest
0 голосов
/ 14 декабря 2018

Можно ли умножить некоторые значения в одном и том же столбце, но не на другие, если значение удовлетворяет определенному условию?Я не хочу создавать другой столбец.

Запрос, с которым я работаю:

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 содержит тип атрибута date, а таблица orders_sales имеет кардинальное отношение 1: n сorderline_sales.Я хочу, чтобы результат SUM умножался только на customer.annual_discount, если ГОД заказа превышает 2017 год. Как мне поступить?

1 Ответ

0 голосов
/ 14 декабря 2018

вы можете использовать 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
...