logo

SQL TVARKA PAGAL SĄLYGĄ, SU MAŽĖJANTI TVARKA

  • Kai norime rūšiuoti įrašus pagal stulpelius, saugomus SQL duomenų bazės lentelėse, svarstome galimybę SQL naudoti sąlygą ORDER BY.
  • SQL sąlyga ORDER BY padeda rūšiuoti įrašus pagal konkretų lentelės stulpelį. Tai reiškia, kad iš pradžių visos reikšmės, saugomos stulpelyje, kuriam taikome sąlygą ORDER BY, bus surūšiuotos. Tada atitinkamos stulpelių reikšmės bus rodomos ta pačia seka, kaip ir vertės, kurias gavome ankstesniame žingsnyje.
  • Naudodami sąlygą ORDER BY, mes galime rūšiuoti įrašus didėjančia arba mažėjančia tvarka pagal mūsų reikalavimus. Įrašai bus rūšiuojami didėjančia tvarka, kai ASC raktinis žodis bus naudojamas su sąlyga ORDER. DESC raktinis žodis surūšiuos įrašus mažėjimo tvarka . Jei po stulpelio, pagal kurį turime rūšiuoti įrašus, nenurodytas joks raktinis žodis, tokiu atveju rūšiavimas pagal nutylėjimą bus atliekamas didėjančia tvarka.

Prieš rašydami įrašų rūšiavimo užklausas, supraskime sintaksę.

Sintaksė įrašams rūšiuoti mažėjančia tvarka:

SELECT ColumnName1,…,ColumnNameN FROM TableName ORDER BY ColumnNameDESC; 

Panagrinėkime šią temą plačiau remdamiesi pavyzdžiais. Užklausoms rašyti pavyzdžiuose naudosime MySQL duomenų bazę.

Apsvarstykite, kad turime klientų lentelę su šiais įrašais:

ID VARDAS AMŽIAUS ADRESAS ATLYGINIMAS
1 Himani Gupta dvidešimt vienas Modi Nagar 22000
2 Šiva Tiwari 22 Bhopalas 21 000
3 Ajeetas Bhargavas Keturi Meerut 65 000
4 Ritešas Jadavas 36 Azamgarh 26 000
5 Balwantas Singhas Keturi Varanasis 36 000
6 Mahešas Šarmas 26 Mathura 22000
7 Rohitas Srivastava 19 Ahmadabadas 38 000
8 Neeru Sharma 29 Pune 40 000
9 Akašas Jadavas 32 Mumbajus 43500
10 Sahilas Šeichas 35 Aurangabadas 68800

1 pavyzdys:

Parašykite užklausą, kad surūšiuotumėte įrašus mažėjančia klientų vardų, saugomų klientų lentelėje, tvarka.

Užklausa:

mysql> SELECT *FROM customers ORDER BY Name DESC;

Čia SELECT užklausoje stulpelyje „Pavadinimas“ taikoma sąlyga ORDER BY, kad būtų rūšiuojami įrašai. DESC raktinis žodis surūšiuos įrašus mažėjimo tvarka.

Gausite tokią išvestį:

ID VARDAS AMŽIAUS ADRESAS ATLYGINIMAS
2 Šiva Tiwari 22 Bhopalas 21 000
10 Sahilas Šeichas 35 Aurangabadas 68800
7 Rohitas Srivastava 19 Ahmadabadas 38 000
4 Ritešas Jadavas 36 Azamgarh 26 000
8 Neeru Sharma 29 Pune 40 000
6 Mahešas Šarmas 26 Mathura 22000
1 Himani Gupta dvidešimt vienas Modi Nagar 22000
5 Balwantas Singhas Keturi Varanasis 36 000
3 Ajeetas Bhargavas Keturi Meerut 65 000
9 Akašas Jadavas 32 Mumbajus 43500

Visi klientų lentelėje esantys įrašai rodomi mažėjančia kliento vardo tvarka.

2 pavyzdys:

Parašykite užklausą, kad surūšiuotumėte įrašus mažėjančia klientų lentelėje saugomų adresų tvarka.

Užklausa:

mysql> SELECT *FROM customers ORDER BY Address DESC;

Užklausoje SELECT stulpeliui „Adresas“ taikoma sąlyga ORDER BY, kad būtų rūšiuojami įrašai. DESC raktinis žodis surūšiuos įrašus mažėjimo tvarka.

Gausite tokią išvestį:

pirminio rakto sudėtinis raktas
ID VARDAS AMŽIAUS ADRESAS ATLYGINIMAS
5 Balwantas Singhas Keturi Varanasis 36 000
8 Neeru Sharma 29 Pune 40 000
9 Akašas Jadavas 32 Mumbajus 43500
1 Himani Gupta dvidešimt vienas Modi Nagar 22000
3 Ajeetas Bhargavas Keturi Meerut 65 000
6 Mahešas Šarmas 26 Mathura 22000
2 Šiva Tiwari 22 Bhopalas 21 000
4 Ritešas Jadavas 36 Azamgarh 26 000
10 Sahilas Šeichas 35 Aurangabadas 68800
7 Rohitas Srivastava 19 Ahmadabadas 38 000

Visi klientų lentelėje esantys įrašai rodomi mažėjančia kliento adreso tvarka.

3 pavyzdys:

Parašykite užklausą, kad surūšiuotumėte įrašus klientų lentelėje saugomo klientų atlyginimo mažėjimo tvarka.

pėdos prieš pėdą

Užklausa:

mysql> SELECT *FROM customers ORDER BY Salary DESC;

Čia SELECT užklausoje stulpelyje „Atlyginimas“ taikoma sąlyga ORDER BY, kad būtų rūšiuojami įrašai. DESC raktinis žodis surūšiuos įrašus mažėjimo tvarka.

Gausite tokią išvestį:

ID vardas Amžius Adresas Atlyginimas
10 Sahilas Šeichas 35 Aurangabadas 68800
3 Ajeetas Bhargavas Keturi Meerut 65 000
9 Akašas Jadavas 32 Mumbajus 43500
8 Neeru Sharma 29 Pune 40 000
7 Rohitas Srivastava 19 Ahmadabadas 38 000
5 Balwantas Singhas Keturi Varanasis 36 000
4 Ritešas Jadavas 36 Azamgarh 26 000
6 Mahešas Šarmas 26 Mathura 22000
1 Himani Gupta dvidešimt vienas Modi Nagar 22000
2 Šiva Tiwari 22 Bhopalas 21 000

Visi klientų lentelėje esantys įrašai rodomi kliento atlyginimo mažėjimo tvarka.

4 pavyzdys:

Parašykite užklausą, kad surūšiuotumėte įrašus mažėjimo tvarka pagal klientų amžių, saugomą klientų lentelėje.

Užklausa:

mysql> SELECT *FROM customers ORDER BY Age DESC;

Čia SELECT užklausoje stulpelyje „Amžius“ taikoma sąlyga ORDER BY, kad būtų rūšiuojami įrašai. DESC raktinis žodis surūšiuos įrašus mažėjimo tvarka.

Gausite tokią išvestį:

ID vardas Amžius Adresas Atlyginimas
3 Ajeetas Bhargavas Keturi Meerut 65 000
5 Balwantas Singhas Keturi Varanasis 36 000
4 Ritešas Jadavas 36 Azamgarh 26 000
10 Sahilas Šeichas 35 Aurangabadas 68800
9 Akašas Jadavas 32 Mumbajus 43500
8 Neeru Sharma 29 Pune 40 000
6 Mahešas Šarmas 26 Mathura 22000
2 Šiva Tiwari 22 Bhopalas 21 000
1 Himani Gupta dvidešimt vienas Modi Nagar 22000
7 Rohitas Srivastava 19 Ahmadabadas 38 000

Visi klientų lentelėje esantys įrašai rodomi mažėjimo tvarka pagal kliento amžių.

Apsvarstykite, kad turime kitą lentelę pavadinimu agentai su šiais įrašais:

PAGALBA vardas Darbo zona Pelno_procentai Kontaktinis numeris Atlyginimas
1 Gurpreet Singh Bengalūras 1 9989675432 43 000
2 Sakšis Kumaris Čenajus 5 8190567342 25 000
3 Prachi Desai Mumbajus 2 9056123432 60 000
4 Shivani Daugiau Pune 3 8894236789 35 500
5 Pallavi Singhas Delis 4 7798092341 38700
6 Rohini Kulkarni Ambala 8 7890945612 25670
7 Shweta pasakė Čandigaras 6 8898786453 31670
8 Sonakshi Tiwari Udaipuras 2 9809453421 25050
9 Anuška Tripathi Ant pirštų 9 8909124326 38 000
10 Devika Šarma Goa 7 7864523145 44050

1 pavyzdys:

Parašykite užklausą, kad surūšiuotumėte įrašus mažėjančia agentų lentelėje saugomų agentų pavadinimų tvarka.

Užklausa:

mysql> SELECT *FROM agents ORDER BY Name DESC;

Čia SELECT užklausoje stulpelyje „Pavadinimas“ taikoma sąlyga ORDER BY, kad būtų rūšiuojami įrašai. DESC raktinis žodis surūšiuos įrašus mažėjimo tvarka.

Gausite tokią išvestį:

PAGALBA vardas Darbo zona Pelno_procentai Kontaktinis numeris Atlyginimas
8 Sonakshi Tiwari Udaipuras 2 9809453421 25050
7 Shweta pasakė Čandigaras 6 8898786453 31670
4 Shivani Daugiau Pune 3 8894236789 35 500
2 Sakšis Kumaris Čenajus 5 8190567342 25 000
6 Rohini Kulkarni Ambala 8 7890945612 25670
3 Prachi Desai Mumbajus 2 9056123432 60 000
5 Pallavi Singhas Delis 4 7798092341 38700
1 Gurpreet Singh Bengalūras 1 9989675432 43 000
10 Devika Šarma Goa 7 7864523145 44050
9 Anuška Tripathi Ant pirštų 9 8909124326 38 000

Visi agentų lentelėje esantys įrašai rodomi agento vardo mažėjimo tvarka.

2 pavyzdys:

Parašykite užklausą, norėdami surūšiuoti įrašus agentų lentelėje saugomo agento atlyginimo mažėjimo tvarka.

Užklausa:

mysql> SELECT *FROM agents ORDER BY Salary DESC;

Čia SELECT užklausoje stulpelyje „Atlyginimas“ taikoma sąlyga ORDER BY, kad būtų rūšiuojami įrašai. DESC raktinis žodis surūšiuos įrašus mažėjimo tvarka.

Gausite tokią išvestį:

kaip vykdyti scenarijų
PAGALBA vardas Darbo zona Pelno_procentai Kontaktinis numeris Atlyginimas
3 Prachi Desai Mumbajus 2 9056123432 60 000
10 Devika Šarma Goa 7 7864523145 44050
1 Gurpreet Singh Bengalūras 1 9989675432 43 000
5 Pallavi Singhas Delis 4 7798092341 38700
9 Anuška Tripathi Ant pirštų 9 8909124326 38 000
4 Shivani Daugiau Pune 3 8894236789 35 500
7 Shweta pasakė Čandigaras 6 8898786453 31670
6 Rohini Kulkarni Ambala 8 7890945612 25670
8 Sonakshi Tiwari Udaipuras 2 9809453421 25050
2 Sakšis Kumaris Čenajus 5 8190567342 25 000

Visi agentų lentelėje esantys įrašai rodomi agento atlyginimo mažėjimo tvarka.

3 pavyzdys:

Parašykite užklausą, kad surūšiuotumėte įrašus mažėjančia agento darbo srities, saugomos agentų lentelėje, tvarka.

Užklausa:

mysql> SELECT *FROM agents ORDER BY WorkArea DESC;

Čia SELECT užklausoje stulpelyje „Darbo sritis“ taikoma sąlyga ORDER BY, kad būtų rūšiuojami įrašai. DESC raktinis žodis surūšiuos įrašus mažėjimo tvarka.

Gausite tokią išvestį:

PAGALBA vardas Darbo zona Pelno_procentai Kontaktinis numeris Atlyginimas
9 Anuška Tripathi Ant pirštų 9 8909124326 38 000
8 Sonakshi Tiwari Udaipuras 2 9809453421 25050
4 Shivani Daugiau Pune 3 8894236789 35 500
3 Prachi Desai Mumbajus 2 9056123432 60 000
10 Devika Šarma Goa 7 7864523145 44050
5 Pallavi Singhas Delis 4 7798092341 38700
2 Sakšis Kumaris Čenajus 5 8190567342 25 000
7 Shweta pasakė Čandigaras 6 8898786453 31670
1 Gurpreet Singh Bengalūras 1 9989675432 43 000
6 Rohini Kulkarni Ambala 8 7890945612 25670

Visi agentų lentelėje esantys įrašai rodomi agento darbo srities mažėjimo tvarka.

4 pavyzdys:

Parašykite užklausą, kad surūšiuotumėte įrašus mažėjančia agento pelno procentine tvarka, saugoma agentų lentelėje.

Užklausa:

mysql> SELECT *FROM agents ORDER BY Profit_Percent DESC;

Čia SELECT užklausoje stulpelyje „Pelno_procentas“ taikoma sąlyga ORDER BY, kad būtų rūšiuojami įrašai. DESC raktinis žodis surūšiuos įrašus mažėjimo tvarka.

Gausite tokią išvestį:

PAGALBA vardas Darbo zona Pelno_procentai Kontaktinis numeris Atlyginimas
9 Anuška Tripathi Ant pirštų 9 8909124326 38 000
6 Rohini Kulkarni Ambala 8 7890945612 25670
10 Devika Šarma Goa 7 7864523145 44050
7 Shweta pasakė Čandigaras 6 8898786453 31670
2 Sakšis Kumaris Čenajus 5 8190567342 25 000
5 Pallavi Singhas Delis 4 7798092341 38700
4 Shivani Daugiau Pune 3 8894236789 35 500
3 Prachi Desai Mumbajus 2 9056123432 60 000
8 Sonakshi Tiwari Udaipuras 2 9809453421 25050
1 Gurpreet Singh Bengalūras 1 9989675432 43 000

Visi agentų lentelėje esantys įrašai rodomi mažėjančia agento pelno procento tvarka.