2017-01-17 4 views
1

Je pratique un examen et collé sur cette question:L'utilisation de tout/ALL dans SQL pour afficher l'entrée la plus élevée dans une table

Ecrire une instruction SQL pour trouver le nom du client a le solde le plus élevé sur de tous les soldes. (Vous devez utiliser ALL ou ANY).

Un exemple (aussi le solde le plus élevé) ligne de la table Deposit

INSERT INTO Deposit(customerName, branchName, accountNumber, balance)  
VALUES ('Jones', 'HFE', '42', '4100.00'); 

Voici ce que j'ai essayé:

SELECT customerName 
FROM Deposit 
WHERE balance > ALL 
(SELECT balance 
FROM Deposit 
WHERE balance >= balance); 

Comment puis-je résoudre ce problème pour faire le nom du client l'affichage du solde le plus élevé?

grâce

Répondre

1

Supposons que vous avez des données comme ceci:

create table deposit (customerName, balance) as (
    select 'cust1', 100 from dual UNION ALL 
    select 'cust2', 500 from dual UNION ALL 
    select 'cust3', 500 from dual UNION ALL 
    select 'cust4', 400 from dual UNION ALL 
    select 'cust5', 400 from dual 
) 

Vous avez besoin:

select customerName 
from deposit 
where balance >= ALL (select balance from deposit) 

qui donne:

cust2 
cust3 

ce qui va mal dans votre code:

  • vous avez un unuseful where état: non seulement cette condition vérifie simplement une colonne contre elle-même, mais il est unuseful, parce que vous voulez simplement votre résultat customerName d'avoir un équilibre supérieur de tout le monde, sans conditions
  • vous avez un strict > au lieu de >=, donc ne correspond à aucune valeur
+0

génial, merci je vois mes erreurs et comment les corriger! –

+0

De rien! – Aleksej