როგორ ხდება SQL დახარისხება? მუშაობს მონაცემთა ბაზიდან. შედეგად მონაცემების დახარისხება განხორციელდება SQL Ms sql დახარისხების sql-ით

Შენიშვნა:
SQL გაკვეთილების ხრახნიანი კატეგორიის ყველა სტატიას აქვს შერჩეული აპლიკაციები და კვლევები საწყისი მონაცემთა ბაზის საფუძველზე.

რელაციური მონაცემთა ბაზების პირველ ნორმალურ ფორმაზე დაყრდნობით, ცხრილებში რიგების თანმიმდევრობა არ არის დამოკიდებული მათ მნიშვნელობაზე. თუმცა, ხშირად პრაქტიკულია ინფორმაციის დახარისხება ეკრანზე გამოტანამდე.

რიგების დალაგება, რომლებზეც გავლენას ახდენს SQL მოთხოვნა, მითითებულია ORDER BY პუნქტით. ბოლოს ვიკითხავ:

აირჩიეთ<Перечень столбцов>FROM<Перечень таблиц>შეკვეთა<Условие сортировки>

დახარისხებისას მითითებულია სვეტები, რომლებიც გამოყენებული იქნება ცხრილის რიგების დასალაგებლად:

ORDER BY col1, col2

SQL დალაგების თანმიმდევრობა

არსებობს დახარისხების 2 ვარიანტი: ზრდისთვის და ცვლილებებისთვის. დახარისხების ტიპის მითითებისთვის სვეტის სახელის შემდეგ მითითებულია საკვანძო სიტყვა ASC (აღმავალი) ან DESC (დაღმავალი), რომელიც მიუთითებს ზრდად ან კლებად მიმდევრობით. როგორც წესი, ASC ტიპი ვიკორიზებულია:

ORDER BY col1 -- წინადადება ტოლი იქნება ORDER BY col1 ACS

თქვენ ასევე შეგიძლიათ მიუთითოთ განსხვავებული თანმიმდევრობა სხვადასხვა პუნქტისთვის:

ORDER BY col1 DESC, col2 ASC

მასალის უზრუნველსაყოფად, გააფართოვეთ დავალება საწყის მონაცემთა ბაზაში:

თქვენ უნდა გაიაროთ თანამშრომლების პირადობის მოწმობების სია, დაალაგოთ ჯგუფის მიხედვით ზრდადი თანმიმდევრობით და დაქირავების თარიღით „ახალიდან ძველამდე“.

აირჩიეთ ID, ჯგუფი, დაქირავების_თარიღი FROM Spіvrobitniki ORDER BY ჯგუფის მიხედვით, დაქირავების_თარიღი DESC

გავიმეოროთ SELECT ოპერატორის სინტაქსი ORDER BY პუნქტით (ვერტიკალური ხაზი მიუთითებს ერთ-ერთი ვარიანტის არჩევის აუცილებლობაზე):

აირჩიეთ [Table_Name.]Column_Name[, [Table_Name.]Column_Name2 ...] FROM [[Database_Name.]Schema_Name.]Table_Name სვეტის_სახელი [, [Table_Name]]Table_Name.

  • შემდეგი >

თუ დაგეხმარათ office-menu.ru-ს მასალები, გთხოვთ, მხარი დაუჭირეთ პროექტს, რათა შემდგომ განვავითარო.

ხშირად საჭიროა კითხვის შედეგის ჩვენება სიმღერის თანმიმდევრობით, მაგალითად, ანბანის შემდეგ. და DBMS აქვს სპეციალური ფუნქცია ჩემი SQL - დახარისხება. ამ შემთხვევაში პროგრამისტს შეუძლია აირჩიოს რომელი სფეროები და რა მიზნით მიაღწიოს სასურველ შედეგს სერიოზული პროგრამირების უნარების სტაგნაციის გარეშე.

როგორ არის დალაგებული მონაცემთა ბაზა?

p align="justify"> მონაცემთა ბაზებთან მუშაობა მუდმივად ასოცირდება უამრავ ინფორმაციას, რომელიც მოითხოვს წესრიგს. ამჟამად, არსებობს იაფი DBMS, რომელსაც აქვს ფუნქციების ფართო სპექტრი, ყველაზე პოპულარულია Oracle და MS SQL. ინფორმაციის დახარისხება, როგორც მონაცემთა ბაზის მქონე რობოტის ერთ-ერთი მთავარი პროცედურა, უზრუნველყოფილია თითოეულ მათგანში სპეციალური ჩაშენებული ფუნქციით.

მონაცემთა რეიტინგი საშუალებას გაძლევთ გაამარტივოთ ძიების პროცესი და ასევე ზოგიერთ შემთხვევაში გეხმარებათ თქვენი ამოცანების შესრულებაში ან პროგრამის მუშაობის ოპტიმიზაციაში. SQL დახარისხება ასოცირდება არჩეულ ველთან და საჭიროების შემთხვევაში, თუ ამ ველის ელემენტებში არის ახალი მნიშვნელობები, შეგიძლიათ მიუთითოთ დამატებითი პარამეტრები, რომლებიც მიუთითებს რიგების გაფართოებაზე.

დახარისხების გუნდი

მონაცემთა ბაზაში SQL დახარისხება უზრუნველყოფილია ORDER BY ფუნქციის გამოყენებით. ასე რომ, მონაცემთა ბაზიდან ინფორმაციის ჩვენებისას, სვეტებისა და ცხრილის ჩასმის შემდეგ, რომლისთვისაც წაიკითხება დახარისხება, საჭიროა ჩანაწერში მიუთითოთ დახარისხების ბრძანება, რის შემდეგაც მიუთითოთ ველი ან ველები, რომლებისთვისაც განხორციელდება დახარისხება.

მაგალითად, თუ ხალხი ცხრილიდან გჭირდებათ მონაცემების ამოღება სახელი და ასაკი ველებიდან და შემდეგ შეიტანეთ შედეგი ანბანური თანმიმდევრობით სახელის სვეტში, რაც დაგეხმარებათ შემდეგი შეკითხვის შექმნაში: აირჩიეთ სახელი, ასაკი ხალხისგან შეკვეთა სახელის მიხედვით.

როგორ დავაყენოთ დახარისხების თანმიმდევრობა?

დღესდღეობით მნიშვნელოვანია პროგრამისტების წინაშე სხვადასხვა ამოცანების დაყენება და ზოგჯერ საჭიროა იმის დადგენა, თუ რა თანმიმდევრობით იქნება ნაჩვენები შედეგი - კლებადი თუ აღმავალი, ანბანის მიხედვით თუ საპირისპირო თანმიმდევრობით? І რომლისთვისაც SQL ენაში დახარისხების თანმიმდევრობა განისაზღვრება საკვანძო სიტყვის შეყვანამდე. ველებისა და ცხრილის არჩევის შემდეგ, რომლიდანაც წაიშლება საჭირო ინფორმაცია, უნდა დაამატოთ ORDER BY, რის შემდეგაც უნდა შეიყვანოთ სვეტის სახელი, რის შემდეგაც უნდა შექმნათ დახარისხება.

საპირისპირო რიგის ამოსაღებად, თქვენ უნდა შეიყვანოთ DESC პარამეტრი სახელის შემდეგ. თუ თქვენ გჭირდებათ ელემენტების შეკვეთა ორი ან მეტი კრიტერიუმის გამოყენებით, მაშინ ნივთები მითითებულია ვისი მეშვეობით და პრიორიტეტი რანჟირებისას მიენიჭება სიაში პირველ ადგილს. ეს ნიშნავს, რომ ელემენტების საბოლოო თანმიმდევრობით არჩევისას DESC პარამეტრი გადის მხოლოდ ერთ ველს ერთდროულად, რომლის სახელიც მითითებულია საკვანძო სიტყვაში, რომელიც საჭიროების შემთხვევაში უნდა იყოს მითითებული ყველა შერჩეულ ელემენტში.

დახარისხების ალტერნატიული მეთოდები

თუ შესაძლებელია შეყვანის SQL დახარისხების ფუნქციის გამოყენება, შეგიძლიათ დაწეროთ ერთ-ერთი ცნობილი ალგორითმი. თუ აუცილებელია ელემენტების საუკეთესო შესაძლო რიგის მიღწევა, გამოიყენეთ მეთოდი, რომელიც დაფუძნებულია ელემენტების ნახევრად გაყოფილ მასივზე. ასევე ძალიან პოპულარული ხდება „ბოლქვის“ რეიტინგის მეთოდები, რომელშიც არასწორი განლაგების შემთხვევაში ხდება ორი ელემენტის გაცვლა, „პირამიდული დახარისხება“, რომელშიც ყველაზე დიდი ელემენტი იგზავნება სიის ბოლოს და ა.შ. სახელწოდებით "დახარისხება ჩანართებით", რაც ნიშნავს კანის ელემენტის გავრცელებას კანზე.

ხელით დაწერილი ალგორითმი არ შეიძლება გამოყენებულ იქნას დახარისხების სიჩქარის გასაზრდელად, პროტესტისთვის, ახალი პროგრამირების შემუშავების მისაღებად და ასევე პროცესის მოდიფიკაციის ნებადართულია მთელი მონაცემთა ბაზის რეიტინგის სქემის კორექტირებით რობოტული პროგრამის ეფექტურობის გაზრდის მიზნით. mi .

მონაცემების შერჩევისას მნიშვნელოვანია მათი მოწესრიგებული ჩვენება. დახარისხება შეიძლება განხორციელდეს vikonan-ით ნებისმიერი ველისთვის ნებისმიერი ტიპის მონაცემით. ეს შეიძლება დალაგდეს რიცხვითი ველებისთვის ზრდის ან კლების მიხედვით. სიმბოლოების (ტექსტის) ველებისთვის შეგიძლიათ დაალაგოთ ანბანური თანმიმდევრობით, თუმცა არსებითად იგივე ეხება დახარისხებას თანმიმდევრობის გაზრდით ან შეცვლით. თქვენ უბრალოდ შეიძლება იყოთ გამარჯვებული ნებისმიერი პირდაპირი გზით - A-დან Z-მდე და ირიბად Z-დან A-მდე.

დახარისხების პროცესის არსი მდგომარეობს მოცემულ თანმიმდევრობაში თანმიმდევრობით. დალაგების შესახებ მოხსენება შეგიძლიათ იხილოთ სტატიაში „დახარისხების ალგორითმები“ მაგალითად, დიდი რაოდენობით თანმიმდევრობის დახარისხება:

2, 4, 1, 5, 9

შეიძლება შემცირდეს შეკვეთილი თანმიმდევრობით:

1, 2, 4, 5, 6

ანალოგიურად, მწკრივის მნიშვნელობების გაზრდით დახარისხებისას:

ივანოვი ივანე, პეტროვ პეტრო, ივანოვი ანდრი

შედეგი არის:

ივანოვი ანდრიი, ივანოვი ივანე, პეტროვ პეტრო

აქ „ივანოვი ანდრიის“ რიგი გადაკვეთილია კუბიდან, ხოლო რიგების გასწორება ხასიათის მიხედვით ხდება. რიგები იწყება „ივანის“ ახალი სიმბოლოებით. თუ სიმბოლო "A" სიტყვა "ანდრიაში" უფრო ადრე მოდის ანბანში, სიმბოლო "I" უფრო დაბალია სიტყვაში "ივანე", მაშინ ეს მწკრივი განთავსდება პირველ რიგში.

დალაგება SQL ჩანაწერის მიხედვით

მწკრივად დასალაგებლად საჭიროა დაამატოთ ORDER BY ბრძანება. ამ ბრძანების შემდეგ მიეთითება ველი, რომელშიც უნდა განხორციელდეს დახარისხება.

განაცხადებისთვის იხილეთ საქონლის საქონლის ცხრილი:

რიცხ
(პროდუქტის ნომერი)
სათაური
(სახელი)
ფასი
(ფასი)
1 მანდარინი50
2 კავუნი120
3 Ანანასი80
4 ბანანი40

აქ მონაცემები უკვე დალაგებულია "num" სვეტით. ახლა ჩამოვწეროთ ცხრილი პროდუქტებით დალაგებული ანბანური თანმიმდევრობით:

აირჩიეთ * საქონლის შეკვეთა დასახელების მიხედვით

SELECT * FROM goods – ბრძანებები საქონლის ცხრილიდან ყველა ველის შესარჩევად;

ORDER BY – დახარისხების ბრძანება;

სათაური – ზუსტად როგორ განხორციელდება დახარისხება.

ასეთი შეტევის შედეგია:

რიცხ სათაური ფასი
3 Ანანასი80
2 კავუნი120
4 ბანანი40
1 მანდარინი50

თქვენ ასევე შეგიძლიათ დაალაგოთ ცხრილის თითოეული ველი.

პირდაპირი დახარისხება

ORDER BY ბრძანება დალაგებულია ზომის მიხედვით. პირდაპირი დახარისხების ხელით შესასრულებლად, სვეტის სახელის შემდეგ შეიყვანეთ საკვანძო სიტყვა ASC (დამატებისთვის) ან DESC (შემცირებისთვის). ამგვარად, იმისათვის, რომ ჩვენი ცხრილი აჩვენოთ ფასების ცვლილების თანმიმდევრობით, უნდა შევიტანოთ იგი ასე:

აირჩიეთ * საქონლის შეკვეთა ფასის მიხედვით DESC

ფასების დიაპაზონის მიხედვით დახარისხება იქნება:

აირჩიეთ * საქონლის შეკვეთა ფასის მიხედვით ASC

დალაგება მრავალ ველში

SQL საშუალებას იძლევა დახარისხება მრავალი ველის მიხედვით. ამ მიზნით ORDER BY ბრძანების შემდეგ მიეთითება საჭირო ველები ვისი მეშვეობით. მოთხოვნის შედეგად შეკვეთა დარეგულირდება ისევე, როგორც დახარისხების ველში.

სვეტი 1 სვეტი2 სვეტი3
3 1
1 3
2 2
2 1
1 2
1 3
3 4

ცხრილს ვახარისხებთ შემდეგი წესების მიხედვით:

აირჩიეთ * FROM mytable ORDER BY სვეტის მიხედვით ASC, სვეტი2 DESC, სვეტი3 ASC

ტობტო. პირველი ზრდისთვის, მეორე ზრდისთვის, მესამე ზრდისთვის. ის აწესრიგებს რიგებს პირველი სვეტის შემდეგ, შემდეგ, პირველი წესის შეცვლის გარეშე, მეორე სვეტის შემდეგ. მერე, ზუსტად ისე, სხვა წესების დარღვევის გარეშე, მესამეს შემდეგ. შედეგად, თქვენ მიიღებთ მონაცემთა შემდეგ კომპლექტს:

სვეტი 1 სვეტი2 სვეტი3
1 3
1 3
1 2
2 2
2 1
3 1
3 1

ბრძანების ბრძანება ORDER BY

მწკრივების დახარისხება ყველაზე ხშირად ერთდროულად ხდება მონაცემთა გონებრივი შერჩევით. ბრძანება ORDER BY მოთავსებულია WHERE შერჩევის შემდეგ. მაგალითად, ჩვენ ვირჩევთ პროდუქტებს 100 რუბლზე ნაკლები ფასით, დახარისხებული სახელების მიხედვით ანბანური თანმიმდევრობით:

აირჩიეთ * საქონლიდან, სადაც ფასი 100შეუკვეთეთ ფასი ASC

მომავალში შეიძლება დაგვჭირდეს ჩვენი არჩევანის დახარისხება - სახელის მიხედვით ტექსტისთვის ან გაზრდის/ცვლის მიხედვით - ციფრული მნიშვნელობებისთვის. ასეთი მიზნებისთვის გვაქვს SQLსპეციალური ოპერატორი შეკვეთა .

1. არჩეული მონაცემების დახარისხება.

მოდით დავახარისხოთ ჩვენი მთელი ცხრილი პროდუქციის გაყიდვების ოდენობით და მთლიანი რაოდენობით თანხა.

აირჩიეთ * ჯამური პროდუქტის შეკვეთიდან თანხის მიხედვით

ბაჩიმომ, სქომ ველების ჩანაწერების დახარისხების შემდეგ ჰკითხა თანხა. აბსოლუტურად აუცილებელია ოპერატორების განლაგების თანმიმდევრულობის შენარჩუნება. ოპერატორი შეკვეთა მე ვარ დამნაშავე იმაში, რომ უკიდურესობამდე მივდივარ, როცა მთხოვენ. წინააღმდეგ შემთხვევაში, შესწორების შესახებ შეტყობინება გაუქმდება.

ასევე დამოკიდებულია ოპერატორზე შეკვეთა არიან ისეთებიც, რომლებსაც შეუძლიათ მონაცემების დალაგება ველების მიხედვით, რაც ჩვენ არ შევაგროვეთ ჩანაწერიდან, რათა საკმარისი იყოს მონაცემთა ბაზაში გამოჩენა.

2. დალაგება მრავალ ველში.

ახლა მოდით დავახარისხოთ ჩვენი კონდახი ერთი ველის უკან. იყოს ველი ქალაქირას წარმოადგენს პროდუქციის რეალიზაციის ადგილი?

აირჩიეთ * ჯამური პროდუქტის შეკვეთიდან თანხის მიხედვით, ქალაქი

დახარისხების სიშავე შემორჩენილია მინდვრების წყალში გაზრდის წესით. შემდეგ ჩვენს კოლექციაში მონაცემები დალაგდება სვეტების მიხედვით თანხა, და შემდეგ მიერ ქალაქი.

3. პირდაპირი დახარისხება.

არ აინტერესებს ისინი, ვინც ოპერატორის კულისებშია შეკვეთა დალაგება ზრდის მიხედვით, ჩვენ ასევე შეგვიძლია გამოვწეროთ დახარისხების მნიშვნელობა კლებისთვის. რა ტიპის კანის ველისთვის არის მითითებული ოპერატორი DESC (რაც სიტყვების სტენოგრამაა) ᲓᲐᲦᲛᲐᲕᲐᲚᲘ).

აირჩიეთ * ჯამური პროდუქტის შეკვეთიდან თანხის DESC, ქალაქი

ვის კონდახს აქვს აზრი მინდორში თანხატყვიები იყო დახარისხებული ნარჩენებისთვის და მინდორში ქალაქი- ზრდისთვის. ოპერატორი DESC მკურნალობა ერთი ადამიანისთვის არის მხოლოდ ერთი, ამიტომ საჭიროების შემთხვევაში უნდა დაინიშნოს კანის არეალის შემდეგ, რათა მონაწილეობა მიიღოს დახარისხების პროცესში.