1
votes

QUERY pour fusionner les noms de deux régions et additionner le nombre de leurs occurrences

J'ai un tableau avec des états / régions du Royaume-Uni. Certaines régions apparaissent plus d'une fois dans cette liste, j'ai donc effectué un COUNTIF pour déterminer le nombre de fois où chacune d'elles se produit.

Je dois maintenant exécuter un QUERY code > pour lister les 5 premières régions.

En général, la plupart des occurrences concernent la région de Londres.

Le problème est que dans les régions, il y a 2 États qui font référence à la région du Grand Londres - Londres et le Grand Londres.

Ces deux, je dois fusionner et additionner leurs valeurs. Il ne doit y avoir qu'une seule région - le Grand Londres, et sa valeur doit contenir la somme de Londres et du Grand Londres.

Voici l'ensemble de données que j'ai:

+----------------+-----------------------+
| State/Province | Number of occurrences |
+----------------+-----------------------+
| Greater London | 9                     |
+----------------+-----------------------+
| Cheshire       | 6                     |
+----------------+-----------------------+
| West Lothian   | 3                     |
+----------------+-----------------------+
| Kent           | 2                     |
+----------------+-----------------------+
| Hampshire      | 1                     |
+----------------+-----------------------+


0 commentaires

3 Réponses :


1
votes
=QUERY(QUERY(ARRAYFORMULA(
 {SUBSTITUTE(IF(A1:A="London","♥",A1:A),"♥","Greater London"),B1:B}),
 "select Col1, sum(Col2) 
  where Col1 is not null 
  group by Col1"),
 "select Col1, max(Col2) 
  group by Col1 
  order by max(Col2) desc 
  limit 5 
  label max(Col2)'Number of occurrences'",1)

0 commentaires

1
votes
=QUERY(ARRAYFORMULA(SUBSTITUTE(
 IF((A1:A="London")+(A1:A="London2")+(A1:A="London3"),
 "♥",A1:A),"♥","Greater London")),
 "select Col1, count(Col1) 
  where Col1 is not null and not Col1 = '#N/A'
  group by Col1 
  order by count(Col1) desc
  limit 5
  label count(Col1) 'Number of occurrences'", 1)

2 commentaires

@ playr0 Excellent travail! Fait le travail correctement. Je voudrais demander, comment puis-je implémenter une autre colonne comme condition s? Ce que je pense, c'est de limiter le COUNT aux enregistrements qui ont 1 dans la colonne supplémentaire? ...


Quelque chose de tel, mais avec le ARRAYFORMULA (SUBSTITUTE (IF ( part implicite pour les deux requêtes dans ce qui suit: = {Query ({Report_dataRange}, "Sélectionnez Col24, Count (Col24) où Col27) = 1 group by Col24 order by Count (Col24) desc limit 5 label count (Col24) '' ", 0), QUERY ({Report_dataRange}," Sélectionnez Count (Col24) group by Col24 order by Count (Col24) desc limit 5 nombre d'étiquettes (Col24) '' ", 0)}



1
votes
=QUERY(ARRAYFORMULA(SUBSTITUTE(
 IF((QUERY(A1:B,"where B=1")="London")+
    (QUERY(A1:B,"where B=1")="London2")+
    (QUERY(A1:B,"where B=1")="London3"),
 "♥",QUERY(A1:B,"where B=1")),"♥","Greater London")),
 "select Col1, count(Col1) 
  where Col1 is not NULL and not Col1 = '#N/A'
  group by Col1 
  order by count(Col1) desc
  limit 5
  label count(Col1) 'Number of occurrences'", 1)

0 commentaires