как добавить два суммированных значения в MySQL - PullRequest
0 голосов
/ 28 июня 2018

Можно ли добавить два суммированных значения в mysql, как показано в запросе, показанном ниже (рисунок 1)?

У меня есть запрос ниже, и я пытаюсь добавить qty и pro.

Рисунок 1

    SELECT  

    SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 0 END) AS qty,
    SUM(CASE WHEN value > 1 AND xp = 2 THEN 1 ELSE 0 END) AS pro

    SUM(pro + qty)

    FROM OrderDetails;

Мне нужно будет использовать qty и pro много раз в запросе, поэтому я не хочу писать запрос, как показано на рисунок 2

рисунок 2

    SELECT  

    SUM(
    SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 0 END)
    + 
    SUM(CASE WHEN value > 1 AND xp = 2 THEN 1 ELSE 0 END)
    )

    FROM OrderDetails;

EDITED

Что я имею в виду, используя кол-во и pro несколько раз в запросе, что-то вроде следующего.

Пример запроса - это то, что я пытаюсь сделать, где я могу многократно использовать qty и pro в запросе в таких местах, как sum(pro + qty) и having (qty > 0 AND pro > 0), без необходимости переписывать вся сумма заявления.

SELECT  

SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 0 END) AS qty,
SUM(CASE WHEN value > 1 AND xp = 2 THEN 1 ELSE 0 END) AS pro

SUM((pro + qty)/100)

FROM OrderDetails

GROUP BY value

HAVING (
       qty > 2
       AND
       pro > 2
       )
;

пример запроса 2 - это то, что я должен сделать в настоящее время, и кажется очень плохой практикой - переписывать SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 0 END) несколько раз, а не просто кол-во или pro как в запросе выше

SELECT  

SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 0 END) AS qty,
SUM(CASE WHEN value > 1 AND xp = 2 THEN 1 ELSE 0 END) AS pro

SUM((
     SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 0 END)
      +
     SUM(CASE WHEN value > 1 AND xp = 2 THEN 1 ELSE 0 END)
)/100)

FROM OrderDetails

GROUP BY value

HAVING (
       SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 0 END) > 2
       AND
       SUM(CASE WHEN value > 1 AND xp = 2 THEN 1 ELSE 0 END) > 2
       )
;

нет способа добавить SUM(pro + qty) после его однократного определения в примерах типа SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 0 END) AS qty

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Создать представление для запроса ниже и использовать его в любое время

SELECT  
    SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 0 END) AS qty,
    SUM(CASE WHEN value > 1 AND xp = 2 THEN 1 ELSE 0 END) AS pro
    FROM OrderDetails;
0 голосов
/ 28 июня 2018

Вы можете вычислить, используя следующий запрос.

SELECT  

SUM(CASE WHEN value > 0 AND xp = 0 THEN 1 ELSE 0 END) AS qty,
SUM(CASE WHEN value > 1 AND xp = 2 THEN 1 ELSE 0 END) AS pro,
SUM(CASE 
        WHEN value > 0 AND xp = 0 THEN 1
        WHEN value > 1 AND xp = 2 THEN 1 
    ELSE 0 END) AS qtyProSum
FROM OrderDetails;
...