Как использовать подвыбор в MySQL, чтобы получить все уникальные имена и их количество?

0

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

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

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

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

Теги:
select
subquery

2 ответа

3
Лучший ответ

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

select etunimi, count(*)
from jasenet
group by etunimi
  • 0
    Спасибо большое!
0

Это потому, что вы не ссылаетесь на colomn из 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
    Спасибо за разъяснение того, как будет работать запрос, если я сделаю его так, как пытался это сделать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню