Кто умеет в SQL?

Что-то торможу.

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

Маша,1,2
Миша,2,null
Вася,3,2
Митя,4,2
Коля,5,1
Вова,6,1

Т.е. с Мишей дружат Маша,Вася,Митя, а с Машей -- только Коля и Вова.

Мне надо написать запрос, который выводит количество друзей индивидуума и его имя.

SELECT count(индивидуальный_номер), номер_друга FROM people GROUP by номер_друга; -- корректно выводит количество друзей человека и индивидуальный_номер человека. Но мне надо ещё и имя человека.

SELECT count(индивидуальный_номер), номер_друга, имя FROM people GROUP by номер_друга,имя; -- выводит какую-то херню.

Подозреваю, что надо некий JOIN, но он у меня не вытанцовывается, так как это одна и та же таблица... Куды копать-то?

Спасибо.
Count надо на номер_друга ставить а групировать по имени и инд номеру -
SELECT Name, [IndId]
,Count([FriendId]) 'NumOfFriends'
FROM [People]
group by Name, IndId
order by IndId

убрал cлучайно затершийся FriendId in the group by.

Edited at 2017-04-05 05:44 pm (UTC)
Что-то не взлетает.

COUNT возвращается как 1, и показываются все люди, которые чьи-то друзья. А надо наоборот, имя того, у кого эти друзья есть.
Нет - показываются люди и кол-во их друзей.

Чтобы показать у кого скажем Миша в друзьях (у трех человек) - конечно надо по-другому сделать.







Дык не показываются!

Смотри что происходит.

SELECT * FROM people;

name | personid | friendof |
------+----------+----------|
Маша | 1 | 2 |
Вася | 3 | 2 |
Митя | 4 | 2 |
Коля | 5 | 1 |
Вова | 6 | 1 |
Миша | 2 | |

SELECT name,personid,COUNT(friendof) FROM people GROUP BY name,personid ORDER BY personid;
name | personid | count
------+----------+-------
Маша | 1 | 1
Миша | 2 | 0
Вася | 3 | 1
Митя | 4 | 1
Коля | 5 | 1
Вова | 6 | 1

А мне надо: Миша, 2 (его номер), 3 (кол-во друзей). И то же самое для Маши.

Это на Postgres.
Вот это -- почти то, что надо:

SELECT COUNT(personid) as friendcount, friendof FROM people GROUP BY friendof ORDER BY friendcount;
friendcount | friendof
-------------+----------
1 |
2 | 1
3 | 2

Только тут имён нет.
А что мешает подзапрос сделать?
select name, friendcount from people p left join (select count(id) as friendcount, frendid from people group by friendid) c on p.id = c.friendid