2015-08-05 3 views
0

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

|id | duration | timeout 
========================= 
| 1 | 100 | 0 
| 2 | 12345 | 1 
| 3 | 321 | 0 

Я хотел бы получить общую продолжительность, а также количество сеансов и количество тайм-аута, например, так:

SELECT count(id) session_count, sum(duration) duration, count(timeout) timeouts 

Но для любой сессии, что тайм-аут, мне нужно, чтобы ограничить значение 1000. так что мой запрос должен производить что-то вроде:

| session_count | duration | timeouts 
===================================== 
|  3   | 1421 | 1 

Заранее спасибо.

+0

'SUM (IF (тайм-аут = 1, 1000, продолжительность)) AS duration'? –

ответ

1

здесь вы идете, а также изменен подсчет (тайм-аут) просуммировать (тайм-аут), что если делает это проверить значение тайм-аута, если 0, то использовать длительность, в противном случае использовать 1000

SELECT COUNT(id) session_count, SUM(IF (timeout = 0, duration,1000)) duration, SUM(timeout) timeouts 
+0

Отлично, спасибо! – Drew

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