J'ai un tableau avec la structure suivante (c'est une version simplifiée, juste pour montrer l'idée) :
name | city
------------------
John | New York
Thomas | Berlin
Hans | Berlin
Boris | Moscow
Boris | Moscow
Vasiliy | Moscow
Je peux utiliser group by
pour obtenir le nombre total de personnes dans chaque ville, comme ça :
select count(*) from my_table group by city
Mais j'ai besoin d'un peu plus et je n'arrive pas à m'y retrouver : J'ai besoin d'obtenir un nombre de toutes les personnes ayant le même nom dans la même ville tout en gardant un nombre total de personnes dans cette ville. Voici à quoi devrait ressembler le résultat :
name | totalWithThisName | totalInThisCity | city
--------------------------------------------------------
John | 1 | 1 | New York
Thomas | 1 | 2 | Berlin
Hans | 1 | 2 | Berlin
Boris | 2 | 3 | Moscow
Vasiliy | 1 | 3 | Moscow
Je sais que je peux prendre des données brutes de la base de données et faire des calculs dans mon programme Java, mais ce serait génial de le faire en SQL simple.
Mise à jour : J'utilise mysql
et je ne peux pas utiliser over
clause.