Mihai Surdeanu

Query de selecție a N-a cea mai mare sumă dintr-o tabelă

Se dă o tabelă, dintr-o bază de date relațională, de tipul MySQL, ce reprezintă o situație a conturilor bancare a mai multor clienți ale unei bănci. Numele tabelei este Accounts. Se cere scrierea unei interogări SQL prin care se poate obține id-ul utilizatorului care are a N-a cea mai mare sumă depusă în cont. Dacă nu există această valoare, se va întoarce null.

+------------+---------+--------+
| Account_Id | User_Id | Amount |
+------------+---------+--------+
| 1          | 4       | 50     |
| 2          | 5       | 75     |
| 3          | 6       | 60     |
+------------+---------+--------+

Soluție:

CREATE FUNCTION getNthHighestAmountInAccounts(N INT) RETURNS INT
BEGIN
  DECLARE M INT DEFAULT N-1;
  RETURN (
      SELECT User_Id FROM Accounts ORDER BY Amount DESC LIMIT M, 1
  );
END

Temă de casă: Se cere și introducerea unei condiții cu privire la paritatea id-ului de utilizator. De exemplu dacă vrem al doilea cont cu cea mai mare sumă, dar id-ul utilizatorului să fie impar, atunci nu se va returna nimic – null.

Mihai

Pasionat de IT. Pasionat de viață. Pasionat de tot ceea ce înseamnă a face o viață mai bună, plină de înțelegere, ajutor reciproc și iubire de aproape.

Adaugă comentariu

Arhive

Arhiva personală