2015-05-12 2 views
2

Я ищу awser, но не могу найти его в Интернете (maby, потому что я не знаю правильного термина). Я ищу запрос, который группирует мои значения, а также показывает нуль для предопределенных значений.Группа запросов mysql и показать возможные значения

Моя таблица имеет значения от 0 - 5 (пример 1,0,4,4,0,0,4,2,1,5,0)

Мне нужен запрос, который всегда показывает аль число, (также с нулевым значением):

nr | сумма
0 | 4
1 | 2
2 | 1
3 | 0
4 | 3
5 | 1

Возможно ли это?

здоровается, Len

+1

Число 5 должно иметь количество = 1 в вашем примере. –

+0

Спасибо, изменил! – Lengo

ответ

2

Вот что вам нужно. Это предполагает, что вы знаете, что значения 0-5 являются единственными возможными значениями, которые могут присутствовать в вашей таблице. Если присутствуют другие значения, это нормально, но вы их не будете считать.

select m.nr, ifnull(m.cnt,0) as amount 

from 
(
    select * from 
    (
     select 0 as nr 
     union all 
     select 1 
     union all 
     select 2 
     union all 
     select 3 
     union all 
     select 4 
     union all 
     select 5 
    ) t1 

    left join 

    (
     select v, count(*) as cnt from 
     test 
     group by v 

    ) t2 on t1.nr = t2.v 

) m; 

SQL Скрипки здесь:

http://sqlfiddle.com/#!9/bc704f/12

+0

Это сработало отлично, спасибо! – Lengo

0

Создать таблицу чисел с одной колонке "NUM" и вставьте все номера (0-5).

Затем сделать левый присоединиться запрос и группу по NUM, как это:

SELECT num, SUM(amount) AS total 
FROM amounts LEFT JOIN numbers ON amounts.nr=numbers.num 
GROUP BY num; 
Смежные вопросы