/ / Sélection des meilleurs résultats de la requête de comptage SQL, y compris la jointure de table - Oracle - sql, oracle, join, filter, count

Sélection des meilleurs résultats de la requête de comptage SQL, y compris la jointure de table - Oracle - sql, oracle, join, filter, count

J'ai cette requête actuellement, qui sélectionne le haut "nombre de micros" dans l'ordre descendant. Je dois cependant filtrer uniquement les 10 premières lignes / nombres les plus élevés. Comment puis-je faire ceci?

J'ai essayé d'ajouter "WHERE ROWNUM <= 10" en bas, en vain.

SELECT customer.company_name, COUNT (item.pickup_reference) as "Number of Pickups"
FROM customer
JOIN item ON (customer.reference_no=item.pickup_reference)
GROUP BY customer.company_name, item.pickup_reference
ORDER BY COUNT (customer.company_name) DESC;

Merci pour toute aide!

Réponses:

3 pour la réponse № 1

Vous devez le sous-interroger pour que le rownum fonctionne.

SELECT *
FROM
(
SELECT customer.company_name, COUNT (item.pickup_reference) as "Number of Pickups"
FROM customer
JOIN item ON (customer.reference_no=item.pickup_reference)
GROUP BY customer.company_name, item.pickup_reference
ORDER BY COUNT (customer.company_name) DESC
)
WHERE rownum <= 10

Vous pouvez également utiliser des fonctions de classement, mais étant donné la simplicité relative de cette opération, je ne suis pas sûr de pouvoir le faire.


1 pour la réponse № 2

La solution en utilisant le rang ressemble à ceci:

select customer.company_name, COUNT (item.pickup_reference) from (
select distinct customer.company_name, COUNT (item.pickup_reference) ,
rank() over ( order by count(item.pickup_reference) desc) rnk
from customer
JOIN item ON (customer.reference_no=item.pickup_reference)
group by customer.company_name, item.pickup_reference
order by COUNT (customer.company_name) )
where rnk < 10

Utiliser le "rownum" pour obtenir le meilleur résultat ne "tdonne le résultat attendu, car il obtient les 10 premières lignes qui ne sont pas ordonnées, puis les commande (merci de le notifier en commentant la réponse de Andrew, je n’ai pas le droit d’ajouter le commentaire).