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 – nul.