2013-03-25 3 views
0

Мне нужно иметь два агрегатных функции в моем запросе, но не могу понять, как фильтровать.Множественные функции агрегата в запросе

мне нужно количество образцов и количество образцов больше, чем 1.

что-то вроде:

SELECT COUNT(Samples), COUNT(Samples >1) 
FROM SampleData 

Я мог бы сделать подзапрос, но есть лучший способ фильтрации, как это?

ответ

2

В основном вы можете использовать значение Sample с использованием CASE, и результат его агрегирования по SUM().

SELECT COUNT(Samples), 
     SUM(CASE WHEN Samples > 1 THEN 1 ELSE 0 END) 
FROM SampleData 

Это будет работать на большинстве СУБД, хотя.

0

Чтобы получить количество записей, см. Ответ JW. Точно так же, чтобы получить общее значение образцов, и общее значение образцов, где образцы> 1, используют:

SELECT SUM(Samples) TotalSamples, 
     SUM(CASE WHEN Samples > 1 THEN Samples ELSE 0 END) SamplesGT1 
FROM SampleData 
Смежные вопросы