SQL - запрос из SQL-запроса - как читать с неизвестных кумнов - PullRequest
0 голосов
/ 19 октября 2018

У меня есть запрос SQL для символов, которые идут в лес n количество раз:

select name, count(forest_entry) from characters
group by name

Это приводит к:

name      |  count(forest_entry)
==========|==============
Gandalf   |  3
Samwise   |  2
Hobbit    |  3
Ork       |  2
Frodo     |  2
Galadriel |  1

Теперь я хочуобратный отсчет количества раз до символов.Например, 3 человека ходили в лес 2 раза.1 человек ходил в лес 1 раз (Галадриэль).2 человека ходили в лес 3 раза.Проблема в том, что у меня нет имени столбца для чтения из первого запроса.

Как мне достичь этого результата:

number of times |  number of
went to forest  |  characters
================|==============
  3             |  2
  1             |  1
  2             |  3

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Вы можете использовать подзапрос, чтобы сначала вернуть количество записей на символ, затем сгруппировать по количеству записей и сделать еще один подсчет по этому:

DECLARE @forestentries TABLE (name varchar(50), entered bit)

INSERT INTO @forestentries VALUES ('Gandalf',1)
INSERT INTO @forestentries VALUES ('Gandalf',1)
INSERT INTO @forestentries VALUES ('Gandalf',1)
INSERT INTO @forestentries VALUES ('Samwise',1)
INSERT INTO @forestentries VALUES ('Samwise',1)

SELECT EntryCount, COUNT(*) [number of characters] FROM (
    SELECT Name, COUNT(entered) as EntryCount from @forestentries group by Name ) a
GROUP BY EntryCount
0 голосов
/ 19 октября 2018

Дайте вычисляемому столбцу псевдоним, чтобы использовать его во внешнем запросе

select times, count(*) people
from
(
    select name, count(forest_entry) times
    from characters
    group by name
) tmp
group by times
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...