2017-01-20 8 views
1

имеют под колонке в таблице продукта:СУММА/Граф случае в течение случая, в MYSQL

a | b | cat 
-------------- 
2 | 4 | 1 
3 | 1 | 1 
4 | 4 | 1 
2 | 1 | 1 
3 | 2 | 1 
5 | 3 | 1 
8 | 7 | 2 
5 | 3 | 2 


$sql = "SELECT 
     SUM(CASE 
      WHEN 
      cat = 1 
      AND 
      a > b 
      THEN 1 else 0 end) as prdplus 
     FROM product 
     "; 

в приведенном выше запросе я получаю значение суммы или считать из больше затем б

, который составляет 3> 1, 2> 1, 3> 2, 5> 3

, следовательно, выход выше запроса будет:

prdplus 
------- 
4 

что мне нужно является подсчитанное значение имеют только +1в выше кол из

то будет с выше запроса теперь нужно +1 подсчитанное значение

3-1 = 2 
2-1 = 1 // just explanation purpose , output i need in -> plus1 
3-2 = 1 // just explanation purpose , output i need in -> plus1 
5-3 = 2 

, следовательно, с выше запроса нужно только количество +1, которое

я не получаю, как писать дело в течение случай, в том числе и выше запрос, как мне нужно как количество, чтобы показать в моей таблице ниже

Выходной финала:

prdplus | plus1 
---------------- 
    4  | 2 
+0

Пожалуйста, объясните 'plus1' в своем окончательном выходе. – 1000111

+0

plus1 - это количество +1 от выхода prdplus, pls см. // просто назначение объяснения, вывод, который мне нужен, ниже – user3209031

+0

Не могли бы вы объяснить, что именно вы делаете и чего хотите достичь. –

ответ

1
SELECT SUM(CASE WHEN a > b 
       THEN 1 
       else 0 
      end) as prdplus, 
     SUM(CASE WHEN a - b = 1 
       THEN 1 
       else 0 
      end) as prdplus1 
FROM product 
+0

спасибо, проверит .... также у меня есть обновленный мой вопрос по коду id – user3209031

+0

спасибо, я думаю, что он работает .... но поскольку у меня больше присоединиться к моему запросу правильно проверит после этого – user3209031

+0

один вопрос, если мне нужно -1 счет, (CASE WHEN a - b = '-1' THEN 1 else 0 end) или (CASE WHEN a - b = -1 THEN 1 else 0 end) – user3209031

1

Проверьте это.

 SELECT 
       SUM(CASE 
        WHEN 
        a > b 
        THEN 1 else 0 end) as prdplus 
        , 
         SUM(CASE WHEN a - b = 1 
         THEN 1 
         else 0 
        end) as plus1 

       FROM 
       (


     select 2 as a , 4 as b union 
     select 3 , 1 union 
     select 4 , 4 union 
     select 2 , 1 union 
     select 3 , 2 union 
     select 5 , 3 
       ) 
     a 
+0

bro выше значения профсоюза являются динамическими .... в моей таблице – user3209031

+0

вместо его вы можете использовать свое имя таблицы .. просто –

+0

на самом деле такой же как juergen d – user3209031

 Смежные вопросы

  • Нет связанных вопросов^_^