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

Other Related Posts:

Idei de optimizare a unui feature de paginare

Idei de optimizare a unui feature de paginare

Short story: Să spunem că lucrezi la o aplicație care expune niște date dintr-o bază de date, prin intermediul unei interfețe UI simple. Ți se cere să implementezi un feature de paginare a tuturor comenzilor făcute în sistem. Cu alte cuvinte, trebuie să implementezi un feature de paginare.

28th Jul 2020 - Mihai Surdeanu