Есть ли способ сделать отбор из производной таблицы?

У меня есть ситуация, когда я создаю производную сводную таблицу, и я хотел бы иметь возможность затем выполнить подвыборы по ней на основе различных критериев (по сути, создание сводной таблицы).

Так что... в псевдо это будет выглядеть примерно так...

select
   (select sum(score) from derivedTable where username like 'a%') as scoresForANames,
   (select sum(score) from derivedTable where username like 'b%') as scoresForBNames

from
  ( select username, score from gameTable where gameId = 111) derivedTable

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

Проблема в том, что derivedTable невидим для подвыборов во внешнем выборе. Итак, мне любопытно, как я могу достичь того же результата, или если я застрял в необходимости писать подвыборы, которые учитывают все критерии индивидуально.

1 ответ

Решение

То, как вы хотите сформулировать запрос, состоит в том, чтобы вообще не иметь подзапросов в select пункт:

select sum(case when username like 'a%' then score end) as scoresForANames,
       sum(case when username like 'b%' then score end) as scoresForBNames
from (select username, score
      from gameTable
      where gameId = 111
     ) derivedTable;

Конечно, в этом случае вам вообще не нужна производная таблица:

select sum(case when username like 'a%' then score end) as scoresForANames,
       sum(case when username like 'b%' then score end) as scoresForBNames
from gameTable gt
where gameId = 111;
Другие вопросы по тегам