Как использовать подвыбор в MySQL, чтобы получить все уникальные имена и их количество? - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь сделать SQL-запрос, который возвращает все уникальные имена и сумму вхождений для каждого имени.

Это то, что я придумал, но он просто получает сумму всехимена, а не сумма каждого имени в отдельности.

select distinct(etunimi) as etunimi, 
      (select count(distinct(etunimi)) as määrä from jasenet) 
from jasenet;

Это правильный путь для решения этой проблемы или есть другой способ достижения этой цели?спасибо.

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Это потому, что вы не указали колонку из outerquery с subquery

Так что на нее следует ссылаться так:

select distinct etunimi, 
      (select count(*) 
       from jasenet j1
       where j1.etunimi = j.etunimi
      ) as määrä 
from jasenet j;

Однако я бы также предложилиспользовать GROUP BY предложение, которое более эффективно, чем коррелированное subquery.

0 голосов
/ 25 мая 2018

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

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