Mam tabelę studentów:
id | age
--------
0 | 25
1 | 25
2 | 23
Chcę zapytać o wszystkich uczniów i dodatkową kolumnę zliczającą, ilu uczniów jest w tym samym wieku:
id | age | count
----------------
0 | 25 | 2
1 | 25 | 2
2 | 23 | 1
Jaki jest najskuteczniejszy sposób na zrobienie tego? Obawiam się, że zapytanie podrzędne będzie powolne i zastanawiam się, czy istnieje lepszy sposób . Jest tu?
sql
performance
Assaf Lavie
źródło
źródło
Jeśli korzystasz z Oracle, wystarczy funkcja analityczna. To wygląda tak:
Jeśli nie korzystasz z Oracle, musisz ponownie dołączyć do liczenia:
źródło
Oto inne rozwiązanie. ten używa bardzo prostej składni. Pierwszy przykład przyjętego rozwiązania nie działał na starszych wersjach Microsoft SQL (tj. 2000)
źródło
Zrobiłbym coś takiego:
źródło
źródło
a jeśli dane w kolumnie „wiek” mają podobne rekordy (np. wiele osób ma 25 lat, wiele innych 32 itd.), powoduje to zamieszanie w wyrównywaniu liczby uczniów do każdego ucznia. aby tego uniknąć, dołączyłem do tabel na legitymacji studenckiej.
źródło