считая с условиями в MySQL - PullRequest
1 голос
/ 27 сентября 2011

я немного застрял в довольно простом запросе

у меня есть эти 4 столбца в таблице

id1 (уникальный), id2 (может повторяться), обновленный (логический), updated_on

Теперь я хочу получить сводку в форме

id2, количество обновлений, макс. (Updated_on)

короче говоря, я хочу, чтобы результат был отсортирован по последнему значению updated_on при подсчете всех строк для этого id2, где update = 1

и для идентификаторов, которые не имеют каких-либо обновлений = 1, показывают 0 с максимальным значением updated_on

______________________
id2|_count__|___date__
1  |   0    | 11/03/05,
3  |   5    | 11/03/04,
6  |   3    | 11/03/03,
2  |   0    | 11/03/02,

Я использовал этот запрос:

select id2, count(updated),max(updated_on) from table
where updated=1
group by need_id_to

но этот запрос не дает результатов, где count будет 0 (по очевидным причинам, потому что я добавляю условие в предложении where)

Ответы [ 3 ]

1 голос
/ 27 сентября 2011
select id2, 
       count(case 
               when updated=1 then updated 
               else null 
             end) updates_count,
       max(updated_on) last_updated
from table
group by id2
order by last_updated desc
1 голос
/ 27 сентября 2011

Логическое поле равно 1 для true и 0 для false.
Вы можете использовать это, чтобы получить количество всех updated = true строк.

SELECT
  id2
  , SUM(updated) as updates
  ,MAX(updated_on) as last_update
FROM table1
GROUP BY id2
ORDER BY last_update DESC
0 голосов
/ 27 сентября 2011
select id2, 
       SUM(CASE WHEN updated=1 THEN 1 ELSE 0 END) AS UpdatedCount,
       max(updated_on) 
    from table
    group by id2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...