Есть много однотипных запросов вида "SELECT COUNT(*) FROM ... WHERE ..." Есть ли возможность их объединить в один запрос? Чтобы возвращало массив чисел COUNT. Т.е. данные берутся из одной и той же таблицы, просто меняется условие в WHERE. Например взять какую нибудь таблицу типа: Group(id, name, owner_id). И надо типа взять все группы где owner_id равен или 1 или 2 или 3. Точнее взять количество таких групп. Сами данные захватывать не надо.
Pavel Denisov: Нет, фигня какая то выходит. Этот запрос загружает данные из БД. А мне категорически не нужно этого. Данных может быть очень много. Поэтому нельзя загружать их. Нужно чтобы делались только COUNT запросы.
Pavel Denisov: Ну да, я просто результат в консоль вывел и там выводится массив словарей вида: owner_id__count, owner_id. Т.е. он подгружает данные из этого поля вместе с count. А мне нужно чтобы не подгружал.
Pavel Denisov: Count нужен, но мне важно чтобы не подгружал он данные остальные. Т.е. я пытаюсь оптимизировать запрос. А если он будет дополнительно помимо count подгружать еще owner_id который мне в этот момент совсем не нужен, то это будет очень хреновая оптимизация.
Pavel Denisov: Нет, ну почему не осилил. Я понял что она делает. Просто я не понял как сделать то что мне нужно... Вообщем хочется оставить raw на крайний случай. Может все таки удастся как то модифицировать ваш запрос выше чтобы он не запрашивал owner_id? Т.е. сейчас я даже логи запросов посмотрел, там именно делается такой запрос: select owner_id, count(*) from...
Pavel Denisov: Ну такое у меня задание чтоб запрос возвращал только count, а сопоставлять мне не надо. Эти count-ы будут использоваться для вычислений в которых совершенно не важно какой count к какой группе относится.
select '<10', count(id) from TBL where Id < 10
union all
select '=10', count(id) from TBL where Id = 10
union all
select '>10', count(id) from TBL where Id > 10