У меня есть таблица студентов:
id | age
--------
0 | 25
1 | 25
2 | 23
Я хочу сделать запрос для всех студентов, и дополнительный столбец, который подсчитывает, сколько студентов одного возраста:
id | age | count
----------------
0 | 25 | 2
1 | 25 | 2
2 | 23 | 1
Какой самый эффективный способ сделать это? Я боюсь, что подзапрос будет медленным, и мне интересно, есть ли лучший способ . Здесь?
sql
performance
Ассаф Лави
источник
источник
Если вы используете Oracle, то подойдет функция аналитики. Это выглядит так:
Если вы не используете Oracle, вам нужно присоединиться к подсчетам:
источник
Вот еще одно решение. этот использует очень простой синтаксис. Первый пример принятого решения не работал на старых версиях Microsoft SQL (т.е. 2000)
источник
Я хотел бы сделать что-то вроде:
источник
источник
и если данные в столбце «возраст» имеют похожие записи (т.е. многим людям 25 лет, многим другим 32 года и т. д.), это приводит к путанице при выравнивании правильного количества для каждого учащегося. Чтобы избежать этого, я присоединился к таблицам по студенческому удостоверению личности.
источник