විස්තරය අනුව ඇණවුම් කරන්න. දත්ත සමුදාය සමඟ වැඩ කිරීම. SQL විමසුමක ප්‍රතිඵලයක් ලෙස දත්ත වර්ග කිරීම. විමසුමක විධානය මගින් නියෝගයේ අනුපිළිවෙල

බොහෝ විට කිසියම් අනුපිළිවෙලක් තුළ විමසුමක ප්රතිඵලය පෙන්වීමට අවශ්ය වේ, උදාහරණයක් ලෙස, අකාරාදී. මේ සඳහා ඩී.බී.එම්.එස් විශේෂ කාර්යයමත SQL භාෂාව- වර්ග කිරීම. මෙම අවස්ථාවෙහිදී, ක්‍රමලේඛකයාට බරපතල ක්‍රමලේඛන කුසලතා භාවිතා නොකර, අපේක්ෂිත ප්‍රති result ලය ලබා ගැනීම සඳහා කුමන ක්ෂේත්‍ර සහ එය සිදු වන්නේද යන්න තෝරා ගත හැකිය.

දත්ත සමුදාය තුළ වර්ග කිරීම යනු කුමක්ද?

දත්ත සමුදායන් සමඟ වැඩ කිරීම සංවිධානය කළ යුතු තොරතුරු විශාල ප්‍රමාණයක් සමඟ නිරන්තරයෙන් සම්බන්ධ වේ. වර්තමානයේදී, පුළුල් පරාසයක කාර්යයන් සහිත DBMS ගණනාවක් ඇති අතර, ඒවායින් වඩාත් ජනප්රිය වන්නේ Oracle සහ MS SQL වේ. දත්ත සමුදායන් සමඟ වැඩ කිරීමේ ප්‍රධාන ක්‍රියා පටිපාටි වලින් එකක් ලෙස තොරතුරු වර්ග කිරීම, ඒ සෑම එකක් තුළම විශේෂිත බිල්ට් ශ්‍රිතයක් මඟින් සපයනු ලැබේ.

ශ්‍රේණිගත කිරීමේ දත්ත ඔබට සෙවුම් ක්‍රියාවලිය සරල කිරීමට ඉඩ සලසයි, සමහර අවස්ථාවලදී යම් යම් ගැටළු විසඳීමට හෝ වැඩසටහනේ ක්‍රියාකාරිත්වය ප්‍රශස්ත කිරීමට උපකාරී වේ. SQL වර්ග කිරීම සිදු කරනු ලබන්නේ වෙන වෙනම තෝරාගත් ක්ෂේත්‍රයකින් වන අතර, අවශ්‍ය නම්, මෙම ක්ෂේත්‍රයේ මූලද්‍රව්‍යවල සමාන අගයන් තිබේ නම්, ඔබට නියම කළ හැකිය අමතර විකල්ප, රේඛාවල පිහිටීම නිර්වචනය කිරීම.

අනුපිළිවෙල විධානය

දත්ත සමුදායේ SQL වර්ග කිරීම සපයනු ලබන්නේ ORDER BY ශ්‍රිතය භාවිතා කිරීමෙනි. එබැවින්, දත්ත සමුදායකින් තොරතුරු ප්‍රතිදානය කිරීමේදී, කියවීම සිදු කරනු ලබන තීරු සහ වගු සඳහන් කිරීමෙන් පසු, විමසුමට වර්ග කිරීමේ විධානයක් නියම කළ යුතු අතර, පසුව වර්ග කිරීම සිදු කරනු ලබන ක්ෂේත්‍රය හෝ ක්ෂේත්‍ර තීරණය කළ යුතුය.

උදාහරණයක් ලෙස, ඔබට පුද්ගල වගුවෙන් නම සහ වයස යන ක්ෂේත්‍රවලින් දත්ත ලබා ගැනීමට අවශ්‍ය නම්, නම තීරුවෙන් අකාරාදී පිළිවෙලට ප්‍රතිඵලය පෙන්වමින්, පහත විමසුම උපකාර වනු ඇත: නම තෝරන්න, නම අනුව පුද්ගලයින්ගෙන් වයස.

වර්ග කිරීමේ අනුපිළිවෙල සකසන්නේ කෙසේද?

නවීන තත්වයන් ක්‍රමලේඛකයින් සඳහා විවිධ කාර්යයන් ඉදිරිපත් කරයි, සමහර විට ප්‍රති result ලය දර්ශනය වන්නේ කුමන අනුපිළිවෙලටද යන්න කලින් තීරණය කිරීම අවශ්‍ය වේ - බැසීමේ හෝ ආරෝහණ අනුපිළිවෙලින්, අකාරාදී පිළිවෙලට හෝ ප්‍රතිලෝම අනුපිළිවෙලින්? තවද මෙය SQL හි සිදු කිරීම සඳහා, විමසුමට මූල පදයක් එක් කිරීමෙන් වර්ග කිරීමේ අනුපිළිවෙල තීරණය වේ. අපේක්ෂිත තොරතුරු ලබා ගන්නා ක්ෂේත්‍ර සහ වගු තේරීමෙන් පසු, ඔබ විසින් ඇණවුම එකතු කළ යුතුය, ඉන්පසු ඔබට වර්ග කිරීමට අවශ්‍ය තීරුවේ නම සඳහන් කරන්න.

ප්‍රතිලෝම අනුපිළිවෙල ලබා ගැනීම සඳහා, ඔබ නමට පසුව DESC පරාමිතිය සඳහන් කළ යුතුය. නිර්ණායක දෙකක් හෝ වැඩි ගණනකට අනුව මූලද්‍රව්‍ය ඇණවුම් කිරීමට අවශ්‍ය නම්, තීරු කොමා වලින් වෙන් කර ඇති අතර, ශ්‍රේණිගත කිරීමේදී ප්‍රමුඛතාවය ලැයිස්තුවේ පළමුවෙන් එන ක්ෂේත්‍රයට දෙනු ලැබේ. DESC පරාමිතිය මඟින් එක් ක්ෂේත්‍රයක පමණක් ප්‍රතිලෝම අනුපිළිවෙලින් මූලද්‍රව්‍ය සැකසීම සඳහා සපයනු ලබන බව සඳහන් කිරීම වටී, මෙම මූල පදය දක්වා ඇති නමෙන් පසුව, අවශ්‍ය නම්, එය තෝරාගත් සියලුම තීරු වල සඳහන් කළ යුතුය.

විකල්ප වර්ග කිරීමේ ක්රම

බිල්ට්-ඉන් SQL වර්ග කිරීමේ කාර්යය භාවිතා කිරීමට නොහැකි නම්, ඔබට සුප්‍රසිද්ධ ඇල්ගොරිතම වලින් එකක් ලිවිය හැකිය. ඔබට මූලද්‍රව්‍යවල වේගවත්ම අනුපිළිවෙල සාක්ෂාත් කර ගැනීමට අවශ්‍ය නම්, ඔබ මූලද්‍රව්‍ය අරාව අඩකින් බෙදීම මත පදනම් වූ ක්‍රමයක් භාවිතා කළ යුතුය. එසේම ඉතා ජනප්‍රිය "බුබුල" ශ්‍රේණිගත කිරීමේ ක්‍රම වන අතර, ඒවා වැරදි ලෙස ස්ථානගත කර ඇත්නම් යාබද මූලද්‍රව්‍ය දෙකක් මාරු කරනු ලැබේ, ලැයිස්තුවේ අවසානයට විශාලතම මූලද්‍රව්‍යය යවන "පිරමිඩ වර්ග කිරීම" සහ "ඇතුළත් කිරීමේ වර්ග කිරීම" එක් එක් මූලද්රව්යයේ පිහිටීම කලින් තීරණය කරයි.

ඔබම ඇල්ගොරිතමයක් ලිවීමෙන් වර්ග කිරීමේ වේගය සැලකිය යුතු ලෙස වැඩි නොකරනු ඇත, කෙසේ වෙතත්, එය ක්‍රමලේඛන කුසලතා වර්ධනයට දායක වන අතර, වැඩසටහනේ කාර්යක්ෂමතාව වැඩි දියුණු කිරීම සඳහා ශ්‍රේණිගත කිරීමේ යෝජනා ක්‍රමය නිශ්චිත දත්ත සමුදායකට සකස් කිරීමෙන් ක්‍රියාවලිය වෙනස් කිරීමට ඔබට ඉඩ සලසයි.

දත්ත ලබා ගැනීමේදී, එය කිසියම් ඇණවුම් කළ ආකෘතියකින් ලබා ගැනීම වැදගත් වේ. ඕනෑම දත්ත වර්ගයක් සහිත ඕනෑම ක්ෂේත්‍රයකින් වර්ග කිරීම සිදු කළ හැක. මෙය සංඛ්‍යාත්මක ක්ෂේත්‍ර සඳහා ආරෝහණ හෝ අවරෝහණ වර්ගයක් විය හැක. අක්ෂර (පෙළ) ක්ෂේත්‍ර සඳහා, මෙය අකාරාදී අනුපිළිවෙලින් වර්ග කළ හැක, නමුත් සාරය වශයෙන් එය ආරෝහණ හෝ අවරෝහණ අනුපිළිවෙලින් වර්ග කර ඇත. එය ඕනෑම දිශාවකට සිදු කළ හැකිය - A සිට Z දක්වා, සහ අනෙක් අතට Z සිට A දක්වා.

වර්ග කිරීමේ ක්රියාවලියේ සාරය නම් යම් අනුපිළිවෙලකට අනුපිළිවෙල අඩු කිරීමයි. ඔබට "ඇල්ගොරිතම වර්ග කිරීම" ලිපියෙන් වර්ග කිරීම ගැන වැඩිදුර ඉගෙන ගත හැක. උදාහරණයක් ලෙස, අත්තනෝමතික සංඛ්‍යා අනුපිළිවෙලක් ආරෝහණ අනුපිළිවෙලට වර්ග කිරීම:

2, 4, 1, 5, 9

ඇණවුම් කළ අනුපිළිවෙලක් ඇති විය යුතුය:

1, 2, 4, 5, 6

එලෙසම, තන්තු අගයන්හි ආරෝහණ අනුපිළිවෙලින් වර්ග කිරීමේදී:

Ivanov Ivan, Petrov Petr, Ivanov Andrey

ප්රතිඵලය විය යුත්තේ:

Ivanov Andrey, Ivanov Ivan, Petrov Petrov

මෙහි "Andrey Ivanov" යන පේළිය ආරම්භයට ගමන් කර ඇත, මන්ද නූල් සංසන්දනය කිරීම චරිතය අනුව සිදු කෙරේ. පේළි දෙකම එකම අක්ෂර "ඉවානොව්" සමඟ ආරම්භ වේ. "Andrey" යන වචනයේ "A" සංකේතය "Ivan" යන වචනයේ "I" සංකේතයට වඩා හෝඩියේ කලින් එන බැවින්, මෙම රේඛාව කලින් තබනු ඇත.

SQL විමසුමක වර්ග කිරීම

වර්ග කිරීම සිදු කිරීම සඳහා, ඔබ විමසුම් තන්තුවට ORDER BY විධානය එක් කළ යුතුය. මෙම විධානයෙන් පසුව, වර්ග කිරීම සිදු කරන ක්ෂේත්‍රය දක්වනු ලැබේ.

උදාහරණ ලෙස, අපි භාණ්ඩ මේස භාණ්ඩ භාවිතා කරමු:

අංකය
(භාණ්ඩ අංකය)
ශීර්ෂය
(නම)
මිල
(මිල)
1 මැන්ඩරින්50
2 කොමඩු120
3 අන්නාසි ගෙඩියක්80
4 කෙසෙල්40

මෙහි දත්ත දැනටමත් "num" තීරුවෙන් ඇණවුම් කර ඇත. දැන්, අපි අකාරාදී පිළිවෙලට වර්ග කර ඇති නිෂ්පාදන සහිත වගුවක් පෙන්වන විමසුමක් ගොඩනඟමු:

තෝරන්න * මාතෘකාව අනුව භාණ්ඩ ඇණවුමෙන්

තෝරන්න * භාණ්ඩ වලින් - භාණ්ඩ වගුවෙන් සියලුම ක්ෂේත්‍ර තෝරා ගැනීමට නියම කරයි;

ඇණවුම් කිරීම - විධානය වර්ග කිරීම;

මාතෘකාව - වර්ග කිරීම සිදු කරනු ලබන තීරුව.

එවැනි ඉල්ලීමක් ක්රියාත්මක කිරීමේ ප්රතිඵලය පහත පරිදි වේ:

අංකය ශීර්ෂය මිල
3 අන්නාසි ගෙඩියක්80
2 කොමඩු120
4 කෙසෙල්40
1 මැන්ඩරින්50

ඔබට ඕනෑම වගු ක්ෂේත්‍රයක් සඳහාද වර්ග කළ හැක.

වර්ග කිරීමේ දිශාව

පෙරනිමියෙන්, ORDER BY විධානය ආරෝහණ අනුපිළිවෙලට වර්ග කරයි. වර්ග කිරීමේ දිශාව හස්තීයව පාලනය කිරීමට, තීරු නාමයට පසුව ASC (ආරෝහණ) හෝ DESC (බැසීම) යන මූල පදය භාවිතා කරන්න. මේ අනුව, අපගේ වගුව මිල ගණන් වල අවරෝහණ අනුපිළිවෙලින් පෙන්වීමට, ඔබ විසින් විමසුම මෙබඳු ඇසිය යුතුය:

තෝරන්න * මිල DESC මගින් භාණ්ඩ ඇණවුමෙන්

ඉහළ යන මිල අනුව වර්ග කිරීම වනුයේ:

තෝරන්න * ASC මිල අනුව භාණ්ඩ ඇණවුමෙන්

ක්ෂේත්ර කිහිපයක් අනුව වර්ග කිරීම

SQL එකවර ක්ෂේත්‍ර කිහිපයක් අනුව වර්ග කිරීමට ඉඩ දෙයි. මෙය සිදු කිරීම සඳහා, ORDER BY විධානයෙන් පසුව, අවශ්‍ය ක්ෂේත්‍ර කොමා වලින් වෙන් කරනු ලැබේ. විමසුම් ප්‍රතිඵලයේ අනුපිළිවෙල වින්‍යාස කරනු ලබන්නේ වර්ග කිරීමේ ක්ෂේත්‍ර සඳහන් කර ඇති අනුපිළිවෙලටම ය.

තීරුව1 තීරුව 2 තීරුව 3
3 1 c
1 3 c
2 2 බී
2 1 බී
1 2
1 3
3 4

පහත දැක්වෙන නීතිරීති අනුව වගුව වර්ග කරමු:

තෝරන්න * Mytable නියෝගයෙන් තීරුව 1 ASC, column2 DESC, column3 ASC

එම. පළමු තීරුව ආරෝහණ වේ, දෙවැන්න අවරෝහණ වේ, තුන්වන තීරුව නැවතත් ඉහළ යයි. විමසුම පළමු තීරුවෙන් පේළි ඇණවුම් කරනු ඇත, පසුව, පළමු රීතිය නොකැඩී, දෙවන තීරුවෙන්. එවිට, ද, පවතින නීති උල්ලංඝනය නොකර, තුන්වන අනුව. ප්‍රතිඵලය මෙවැනි දත්ත කට්ටලයක් වනු ඇත:

තීරුව1 තීරුව 2 තීරුව 3
1 3
1 3 c
1 2
2 2 බී
2 1 බී
3 1
3 1 c

විමසුමක විධානය මගින් නියෝගයේ අනුපිළිවෙල

පේළි වර්ග කිරීම බොහෝ විට සිදු කරනු ලබන්නේ දත්ත තෝරාගැනීමේ කොන්දේසියක් සමඟිනි. WHERE තේරීමේ කොන්දේසියෙන් පසුව ORDER BY විධානය තබනු ලැබේ. උදාහරණයක් ලෙස, අපි අකාරාදී පිළිවෙලට නම අනුව වර්ග කර ඇති රූබල් 100 ට අඩු මිලක් සහිත නිෂ්පාදන තෝරා ගනිමු:

තෝරන්න * භාණ්ඩ වලින් මිල 100 කොහෙද ASC මිල අනුව ඇණවුම් කරන්න

ප්‍රවේශයේ ඇති නියෝගය මගින් නියම කරන ලද ක්ෂේත්‍රවල (යන්හි) අගයන්හි ආරෝහණ හෝ අවරෝහණ අනුපිළිවෙලෙහි විමසුමකින් ආපසු ලැබෙන වාර්තා වර්ග කරයි.

වාක්‍ය ඛණ්ඩය

තෝරන්න ක්ෂේත්‍ර_ලැයිස්තුව
සිට වගුව
කොහෙද තේරීම_තත්වය
[, ක්ෂේත්‍රය2 ][, ...]]]

වගන්තියෙන් නියෝගයක් අඩංගු SELECT ප්‍රකාශයක පහත අංග ඇතුළත් වේ:

සටහන්

වගන්තියෙන් නියෝගය විකල්ප වේ. ඔබට වර්ග කළ ආකාරයෙන් දත්ත පෙන්වීමට අවශ්‍ය වූ විට එය භාවිතා කළ යුතුය.

පෙරනිමි අනුපිළිවෙල වැඩි වෙමින් පවතී (A සිට Z, 0 සිට 9 දක්වා). පහත උදාහරණ දෙක මඟින් සේවක නම් අවසාන නම අනුව වර්ග කිරීම පෙන්වයි.

අවසාන නම, මුල් නම තෝරන්න
සේවකයින්ගෙන්
අවසාන නම අනුව ඇණවුම් කරන්න;
අවසාන නම, මුල් නම තෝරන්න
සේවකයින්ගෙන්
අවසාන නම ASC මගින් ඇණවුම් කරන්න;

අවරෝහණ අනුපිළිවෙලට (Z සිට A, 9 සිට 0 දක්වා), ඔබට වාර්තා වර්ග කිරීමට අවශ්‍ය එක් එක් ක්ෂේත්‍රය අවසානයේ වෙන් කර ඇති DESC යන වචනය එක් කරන්න. පහත උදාහරණය සේවක නම් වැටුප් අවරෝහණ අනුපිළිවෙලින් වර්ග කරයි.

අවසාන නම තෝරන්න, වැටුප
සේවකයින්ගෙන්
වැටුප් DESC මගින් ඇණවුම් කරන්න, අවසාන නම;

ORDER BY වගන්තියේ Memo වර්ගයේ දත්ත අඩංගු ක්ෂේත්‍රයක් ඔබ සඳහන් කරන්නේ නම් හෝ OLE වස්තූන්, දෝෂයක් සිදුවනු ඇත. හරය Microsoft DBMSමෙම ආකාරයේ ක්ෂේත්‍ර අනුව වර්ග කිරීමට ප්‍රවේශය සහාය නොදක්වයි.

ORDER BY වගන්තිය සාමාන්‍යයෙන් SQL ප්‍රකාශයක අවසාන මූලද්‍රව්‍යය වේ.

ඔබට ORDER BY වගන්තියේ අමතර ක්ෂේත්‍ර ඇතුළත් කළ හැක. ලේඛන පළමුව අනුපිළිවෙලින් වගන්තියේ මුලින් සඳහන් කර ඇති ක්ෂේත්‍රයෙන් වර්ග කෙරේ. එකම පළමු ක්ෂේත්‍ර අගයන් සහිත වාර්තා පසුව සඳහන් කර ඇති දෙවන ක්ෂේත්‍රය අනුව වර්ග කරනු ලැබේ, යනාදිය.


ඊළඟ චක්රය:

පියවර 8: සරල වර්ග කිරීම

ඔබේ SQL විමසුමේ ප්‍රතිඵලය වාර්තාවක් සඳහා මූලාශ්‍ර ද්‍රව්‍ය බවට පත්වීම නම්, එහි ඇති දත්ත වර්ග කිරීමේ ප්‍රශ්නය අතිශයින් වැදගත් වන්නේ, නිසි පරිදි වර්ග නොකළ වාර්තාවක් කියවන අයෙකුට ඉක්මනින් සොයා ගැනීම ඉතා අපහසු බැවිනි. ඔවුන්ට අවශ්ය තොරතුරු කෑල්ලක්. විමසුම් ප්‍රතිඵල තීරු අනුව දත්ත වර්ග කිරීමට (අපගේ අවස්ථාවෙහි, වගු ක්ෂේත්‍ර අනුව), SQL විසින් ORDER BY මූල පදය භාවිතා කරයි. සරලම වර්ගීකරණයේ උදාහරණයක් පහත දැක්වේ. පදනම 2 පියවරෙන් ඉල්ලීමෙන් ලබාගෙන ඇත: "සරල තේරීම් නිර්ණායකයක් සහිත ඉල්ලීම." අපි S_NAME ක්ෂේත්‍රය අනුව සේවකයින් වර්ග කරන්නෙමු (සම්පූර්ණ නම).

S_NAME තෝරන්න, D_STAFF වෙතින් S_අත්දැකීම් S_අත්දැකීම්

SQL විමසුමක ප්‍රතිඵලය එක් ක්ෂේත්‍රයකින් වර්ග කිරීම.

පියවර 9. සංකීර්ණ වර්ග කිරීම

බොහෝ විට, සහ සෑම විටම පාහේ, දත්ත තීරු එකකට වඩා වැඩි ගණනකින් වර්ග කිරීම අවශ්‍ය වන අතර සෑම විටම ආරෝහණ අනුපිළිවෙලින් නොවේ. SQL වාක්‍ය ඛණ්ඩය උපකල්පනය කරන්නේ ORDER BY මූල පදයෙන් පසුව, කොමාවකින් වෙන් කරන ලද තීරු ලැයිස්තුවක් මෙන්ම එක් එක් තීරුව සඳහා වර්ග කිරීමේ ක්‍රමයක්: අගයන් ආරෝහණ අනුපිළිවෙලින් - ASC හෝ අවරෝහණ අනුපිළිවෙලින් - DESC. පහත උදාහරණයේ දී, අපි සියලුම සේවකයින් සඳහා ඔවුන්ගේ සේවා කාලයෙහි අවරෝහණ අනුපිළිවෙලින් වාර්තා පෙන්වමු. අපි එකම සේවා කාලය සහිත සේවකයින් අකාරාදී පිළිවෙලට වර්ග කරමු.

S_EXPERIENCE තෝරන්න, D_STAFF නියෝගයෙන් S_NAME S_EXPERIENCE DESC, S_NAME ASC


SQL විමසුමක ප්‍රතිඵලය ක්ෂේත්‍ර දෙකකින් වර්ග කිරීම.

බොහෝ විට, [දිනය] වැනි තීරු සමඟ ප්‍රතිලෝම අනුපිළිවෙල භාවිතා වේ. දිනය ගබඩා කරන්නේ නම්, උදාහරණයක් ලෙස, තොරතුරු ඇතුළත් කළ දිනය, ප්‍රතිලෝම වර්ග කිරීමේදී, ලැයිස්තුවේ ආරම්භයේදීම ඉතිරි ඒවාට සාපේක්ෂව මෑතකදී එකතු කරන ලද වාර්තා වේ. විමසුම මඟින් දත්ත සමුදායෙන් ප්‍රවෘත්ති නිවේදන ලබා ගන්නේ නම්, නිවේදන සාමාන්‍යයෙන් ඉහළ සිට පහළට කියවන අතර ප්‍රවෘත්ති වෙබ් අඩවිවල ඒවා සියල්ලම නොපෙන්වන බැවින්, ඒවායේ අදාළත්වයේ අවරෝහණ අනුපිළිවෙලට වර්ග කළ නිවේදන ලැයිස්තුවක් අපට ලැබේ. , නමුත් වඩාත්ම "නැවුම්" කිහිපයක් පමණි.




ඉහල