SQL-запрос для поиска парня с наибольшим количеством друзей?

У меня есть таблица друзей с двумя столбцами: id1, который является идентификатором студента, и id2, который является идентификатором студента id2.

Имя столбца Friend
: id1 -> id2

Я должен найти студентов с максимальным количеством друзей.

Я получаю данные в следующей форме:
человек (идентификатор) --> количество друзей в pp и ppp
путем применения группы к другу
и для этого подзапроса я выбираю ученика с наибольшим количеством .

Вот мой запрос:

select * from
(select kk.id1 as id3, count(*) as b from friend kk group by kk.id1) pp
where not exists 
(select * from
  (select kk1.id1 as id2, count(*) as b1 from friend kk1 group by kk1.id1) ppp
 where ppp.b1 > pp.b )

Это простой запрос, но я получаю неверные результаты. Может ли кто-нибудь указать, что я сделал неправильно?


person Dude    schedule 24.02.2013    source источник
comment
Какие неправильные результаты вы получаете? Можете ли вы привести пример данных в вашей таблице и ожидаемого результата?   -  person Josien    schedule 25.02.2013
comment
@Josien Это перенастройка всех строк, а не выбор строк с максимальным количеством   -  person Dude    schedule 25.02.2013


Ответы (2)


Действительно хороший вопрос. Я переформатировал ваш запрос, чтобы сделать его немного более читабельным, и протестировал его как в SQL Server, так и в SQLite. В SQL Server запрос ведет себя так, как ожидалось, но в SQLite это не так. Я не могу найти никакого объяснения этому (пока), все еще работаю над этим...

SELECT *
FROM   (SELECT F1.id1 as id3,
               count(*) as Count1
        FROM   Friend AS F1
        GROUP BY F1.id1) sub1
WHERE  NOT EXISTS ( SELECT *
                    FROM   (SELECT F2.id1 as id2,
                                   count(*) as Count2
                            FROM   Friend AS F2
                            GROUP BY F2.id1) sub2
                    WHERE  sub2.Count2 > sub1.Count1);
person Josien    schedule 25.02.2013
comment
Не за что :-) Я надеюсь выяснить, в чем причина разницы, это интересная проблема... - person Josien; 26.02.2013

person    schedule
comment
Большое спасибо, не могли бы вы указать, что я делаю неправильно. Запрос, который я написал, должен работать - person Dude; 24.02.2013