SQLite Group в каждом конкретном случае + агрегат - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь сгруппировать по агрегатам из условных выражений, но не могу найти правильный способ сделать это.

Одна идея, которая приходит в голову, состоит в том, чтобы СОЗДАТЬ ВРЕМЕННУЮ ТАБЛИЦУ и запросить это, но в случае, если мы не можем создавать временные таблицы, есть идеи?

Вот текущий запрос:

select
case when count( p.id) = 1 then "Just One Photo"
  when count(p.id) >1 and count(p.id) < 4 then "2 to 3 photos"
  when count(p.id) >3 and count(p.id) < 6 then "4 to 5 photos"
  when count(p.id) >5 then "More than 5 photos"
  end bin
,count(p.id) as photo_count
,ra
,----re----
from table1 b
inner join table2 p on b.key = p.key

Вот результат:

    +----------------+-------------+-------+--------------+
    | Aggregate      | photo_count | ra    | ----re----   |
    +----------------+-------------+-------+--------------+
    | Just One Photo |           1 |   4.0 |          166 |
    | Just One Photo |           1 |   4.0 |            6 |
    | Just One Photo |           1 |   2.0 |            5 |
    | 2 to 3 photos  |           3 |   2.0 |           10 |
    | Just One Photo |           1 |   1.0 |            4 |
    | Just One Photo |           1 |   2.0 |            6 |
    | Just One Photo |           1 |   4.5 |            6 |
    | 2 to 3 photos  |           2 |   4.5 |          282 |
    | Just One Photo |           1 |   4.0 |           91 |
    | Just One Photo |           1 |   3.5 |          340 |

На что я надеюсь:

    +----------------+-----------------+---------+--------------+
    | Aggregate      | avg(photo_coun) | avg(ra) | avg(re)---   |
    +----------------+-----------------+---------+--------------+
    | Just One Photo |             1.0 |     4.0 |          166 |
    | 2 to 3 photos  |             1.9 |     4.0 |            6 |
...