කොන්දේසි සහිත වර්ග එකතුව. SQL සමස්ථ කාර්යයන් - SUM, MIN, MAX, AVG, COUNT. පරාමිති හෝ තර්ක

විශේෂිත සැපයුම්කරුවෙකු විසින් නිෂ්පාදනය කරන ලද PC මාදිලි ගණන සොයා ගන්නේ කෙසේද? සමාන පරිගණකවල සාමාන්‍ය මිල තීරණය කරන්නේ කෙසේද? පිරිවිතර? සමහර සංඛ්‍යානමය තොරතුරුවලට අදාළ මෙම සහ තවත් බොහෝ ප්‍රශ්න භාවිතයෙන් පිළිතුරු සැපයිය හැකිය අවසාන (සමස්ත) කාර්යයන්. සම්මතය පහත සමස්ත කාර්යයන් සපයයි:

මෙම සියලු කාර්යයන් තනි අගයක් ලබා දෙයි. ඒ සමගම, කාර්යයන් COUNT, MINසහ උපරිමඕනෑම දත්ත වර්ගයකට අදාළ වේ එකතුවසහ AVGසංඛ්යාත්මක ක්ෂේත්ර සඳහා පමණක් භාවිතා වේ. කාර්යය අතර වෙනස COUNT(*)සහ COUNT(<имя поля>) දෙවන එක ගණනය කිරීමේදී NULL අගයන් සැලකිල්ලට නොගනී.

උදාහරණයක්. පුද්ගලික පරිගණක සඳහා අවම සහ උපරිම මිල සොයන්න:

උදාහරණයක්. නිෂ්පාදකයා A විසින් නිපදවන ලද පරිගණක සංඛ්‍යාව සොයන්න:

උදාහරණයක්. නිෂ්පාදකයා A විසින් නිපදවන විවිධ මාදිලි ගණන ගැන අප උනන්දු වන්නේ නම්, විමසුම පහත පරිදි සකස් කළ හැකිය (නිෂ්පාදන වගුවේ සෑම ආකෘතියක්ම එක් වරක් සටහන් කර ඇති බව භාවිතා කර):

උදාහරණයක්. A නිෂ්පාදකයා විසින් නිෂ්පාදනය කරන ලද විවිධ මාදිලි ගණන සොයන්න. විමසුම පෙර එකට සමාන වේ, නිෂ්පාදකයා A විසින් නිෂ්පාදනය කරන ලද මුළු මාදිලි ගණන තීරණය කිරීමට අවශ්‍ය විය. මෙහිදී ඔබ විවිධ මාදිලි ගණන සොයා ගත යුතුය. පරිගණක වගුව (එනම් විකිණීමට ඇති ඒවා).

සංඛ්යානමය දර්ශක ලබා ගැනීමේදී අද්විතීය අගයන් පමණක් භාවිතා කරන බව සහතික කිරීම සඳහා, කවදාද සමස්ථ කාර්යයන් පිළිබඳ තර්කයභාවිතා කළ හැකිය DISTINCT පරාමිතිය. තවත් පරාමිතිය ALLපෙරනිමිය වන අතර තීරුවේ ඇති සියලුම ආපසු ලබා දුන් අගයන් ගණන් කරනු ලැබේ යැයි උපකල්පනය කරයි. ක්රියාකරු,

නිෂ්පාදනය කරන ලද PC මාදිලි ගණන ලබා ගැනීමට අවශ්ය නම් හැමෝමනිෂ්පාදකයා, ඔබ භාවිතා කිරීමට අවශ්ය වනු ඇත වගන්තිය අනුව කණ්ඩායම, වාක්‍යානුකූලව පහත දැක්වේ කොහෙද වගන්ති.

වගන්තිය අනුව කණ්ඩායම

වගන්තිය අනුව කණ්ඩායමයෙදිය හැකි ප්‍රතිදාන රේඛා කණ්ඩායම් නිර්වචනය කිරීමට භාවිතා කරයි සමස්ථ කාර්යයන් (COUNT, MIN, MAX, AVG සහ SUM). මෙම වගන්තිය අස්ථානගත වී ඇති අතර සමස්ථ ශ්‍රිත භාවිතා කරන්නේ නම්, නම් සඳහන් කර ඇති සියලුම තීරු තෝරන්න, ඇතුළත් කළ යුතුය සමස්ථ කාර්යයන්, සහ මෙම කාර්යයන් විමසුම් පුරෝකථනය තෘප්තිමත් කරන සම්පූර්ණ පේළි කට්ටලයට යොදනු ඇත. එසේ නොමැතිනම්, SELECT ලැයිස්තුවේ සියලුම තීරු ඇතුළත් නොවේසමස්ත ශ්‍රිතවල සඳහන් කළ යුතුය GROUP by වගන්තියේ. එහි ප්‍රතිඵලයක් වශයෙන්, සියලුම ප්‍රතිදාන විමසුම් පේළි මෙම තීරු වල එකම අගයන් සංයෝජන මගින් සංලක්ෂිත කණ්ඩායම් වලට බෙදා ඇත. මෙයින් පසු, එක් එක් කණ්ඩායමට සමස්ථ කාර්යයන් යොදනු ලැබේ. GROUP BY සඳහා සියලුම NULL අගයන් සමාන ලෙස සලකන බව කරුණාවෙන් සලකන්න, i.e. NULL අගයන් සහිත ක්ෂේත්‍රයකින් සමූහගත කරන විට, එවැනි පේළි සියල්ල එක කණ්ඩායමකට වැටේ.
නම් GROUP by වගන්තියක් තිබේ නම්, SELECT වගන්තියේ සමස්ථ කාර්යයන් නොමැත, එවිට විමසුම සෑම කණ්ඩායමකින්ම එක් පේළියක් ලබා දෙනු ඇත. මෙම විශේෂාංගය, DISTINCT මූල පදය සමඟින්, ප්‍රතිඵල කට්ටලයක අනුපිටපත් පේළි ඉවත් කිරීමට භාවිත කළ හැක.
අපි සරල උදාහරණයක් බලමු:
මාදිලිය තෝරන්න, COUNT(ආකෘතිය) AS Qty_model, AVG(මිල) AS සාමාන්‍ය_මිල
පරිගණකයෙන්
ආකෘතිය අනුව GROUP;

මෙම ඉල්ලීමේ දී, එක් එක් PC ආකෘතිය සඳහා, ඔවුන්ගේ අංකය සහ සාමාන්ය පිරිවැය තීරණය කරනු ලැබේ. එකම ආදර්ශ අගය සහිත සියලුම පේළි සමූහයක් සාදන අතර, SELECT හි ප්‍රතිදානය එක් එක් කණ්ඩායම සඳහා අගයන් ගණන සහ සාමාන්‍ය මිල අගයන් ගණනය කරයි. විමසුමේ ප්රතිඵලය පහත වගුව වනු ඇත:
ආකෘතිය Qty_model සාමාන්‍ය_මිල
1121 3 850.0
1232 4 425.0
1233 3 843.33333333333337
1260 1 350.0

SELECT හි දින තීරුවක් තිබුනේ නම්, එක් එක් නිශ්චිත දිනය සඳහා මෙම දර්ශක ගණනය කිරීමට හැකි වනු ඇත. මෙය සිදු කිරීම සඳහා, ඔබ කණ්ඩායම් තීරුවක් ලෙස දිනය එකතු කළ යුතු අතර, පසුව එක් එක් අගයන් (ආකෘතිය-දිනය) සඳහා සමස්ථ කාර්යයන් ගණනය කරනු ලැබේ.

විශේෂිත කිහිපයක් තිබේ සමස්ථ කාර්යයන් ඉටු කිරීම සඳහා නීති:

  • ඉල්ලීමේ ප්රතිඵලයක් ලෙස නම් පේළි කිසිවක් ලැබී නැත(හෝ ලබා දී ඇති කණ්ඩායමක් සඳහා පේළි එකකට වඩා වැඩි), එවිට සමස්ත ශ්‍රිත කිසිවක් ගණනය කිරීම සඳහා මූලාශ්‍ර දත්ත නොමැත. මෙම අවස්ථාවේදී, COUNT ශ්‍රිතවල ප්‍රතිඵලය ශුන්‍ය වන අතර අනෙකුත් සියලුම ශ්‍රිතවල ප්‍රතිඵලය NULL වේ.
  • තර්කයසමස්ථ කාර්යය සමස්ථ කාර්යයන් අඩංගු විය නොහැක(කර්තව්යය සිට කාර්යය). එම. එක් විමසුමක දී උපරිම සාමාන්‍ය අගයන් ලබා ගැනීමට නොහැකි ය.
  • COUNT ශ්‍රිතය ක්‍රියාත්මක කිරීමේ ප්‍රතිඵලය වේ පූර්ණ සංඛ්යාව(INTEGER). අනෙකුත් සමස්ථ ශ්‍රිතයන් ඔවුන් සකසන අගයන්හි දත්ත වර්ග වලට උරුමකම් කියයි.
  • SUM ශ්‍රිතය භාවිතා කරන දත්ත වර්ගයේ උපරිම අගයට වඩා වැඩි ප්‍රතිඵලයක් නිපදවන්නේ නම්, දෝෂය.

එබැවින්, ඉල්ලීම අඩංගු නොවේ නම් වගන්ති අනුව GROUP, එම සමස්ථ කාර්යයන්ඇතුළත් තෝරන්න වගන්තිය, ලැබෙන සියලුම විමසුම් පේළි මත ක්‍රියාත්මක වේ. ඉල්ලීම අඩංගු නම් වගන්තිය අනුව කණ්ඩායම, තීරුවක හෝ නිශ්චිතව දක්වා ඇති තීරු සමූහයක එකම අගයන් ඇති සෑම පේළි කට්ටලයක්ම වගන්තිය අනුව කණ්ඩායම, කණ්ඩායමක් සෑදෙයි, සහ සමස්ථ කාර්යයන්එක් එක් කණ්ඩායම සඳහා වෙන වෙනම සිදු කරනු ලැබේ.

පිරිනැමීමක් ඇත

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

SQL භාෂාවේ SUM කාර්යය, එහි සරල බව තිබියදීත්, දත්ත සමුදායක් සමඟ වැඩ කිරීමේදී බොහෝ විට භාවිතා වේ. එහි ආධාරයෙන්, සහායක DBMS මෙවලම්වල උපකාරයෙන් තොරව සමහර අතරමැදි හෝ අවසාන ප්රතිඵල ලබා ගැනීම පහසුය.

ක්‍රියාකාරී වාක්‍ය ඛණ්ඩය

බහුතරය තුළ SQL භාෂාඑකතුවේ වාක්‍ය ඛණ්ඩය සමාන වේ - ක්ෂේත්‍රයේ නම හෝ ඒවායින් කිහිපයක ගණිතමය ක්‍රියාකාරිත්වය පමණක් තර්කයක් ලෙස භාවිතා කරයි, ඒ මත එකතුව අවශ්‍ය වේ.

සුවිශේෂී අවස්ථා වලදී, නිශ්චිත අගයක් අංකයක් හෝ විචල්‍යයක් ලෙස සම්ප්‍රේෂණය කළ හැකිය, නමුත් එවැනි “යෝජනා ක්‍රම” ප්‍රායෝගිකව භාවිතා නොවේ, මන්ද ඒවා එතරම් අගයක් නොපවතී. SQL හි ශ්‍රිත වාක්‍ය ඛණ්ඩය පහත දැක්වේ:

sum(a) - මෙහි යම් සංඛ්‍යාත්මක අගයක් හෝ ප්‍රකාශනයක් a පරාමිතිය ලෙස භාවිතා වේ

පරාමිතියට පෙර ඔබට මූල පද සැකසිය හැකි බව සඳහන් කිරීම වටී, උදාහරණයක් ලෙස, DISTINCT හෝ ALL, පිළිවෙලින් අද්විතීය හෝ සියලුම අගයන් පමණක් ගනු ඇත.

SQL හි SUM භාවිතා කිරීමේ උදාහරණය

කාර්යය ක්රියා කරන ආකාරය සම්පූර්ණයෙන් අවබෝධ කර ගැනීම සඳහා, උදාහරණ කිහිපයක් සලකා බැලීම වටී. SQL හි, SUM ප්‍රතිලාභ ප්‍රතිඵලයක් ලෙස සහ අතරමැදි අගයක් ලෙස, උදාහරණයක් ලෙස, කොන්දේසියක් පරීක්ෂා කිරීමට භාවිතා කළ හැක.

පළමු අවස්ථාව සඳහා, මිලදී ගැනීම් ගණන බහු වචන වලින් විය හැකි බව සැලකිල්ලට ගනිමින්, එක් එක් නිෂ්පාදනය සඳහා විකුණුම් ප්රමාණය ආපසු ලබා දීමට අවශ්ය වූ විට විකල්පය සලකා බලන්න. ප්රතිඵලය ලබා ගැනීම සඳහා, පහත විමසුම ක්රියාත්මක කිරීමට ප්රමාණවත් වනු ඇත:

නිෂ්පාදන තෝරන්න, විකුණුම් කාණ්ඩයෙන් නිෂ්පාදන එකතුව (මිලදී ගැනීමේ මුදල);

ඊට ප්‍රතිචාර වශයෙන් මෙම විධානයඒ සෑම එකක් සඳහාම මුළු මිලදී ගැනීමේ මුදල සමඟ අද්විතීය නිෂ්පාදන ලැයිස්තුවක් ඇත.

දෙවන උදාහරණය සඳහා, ඔබට නිශ්චිත අගයක් ඉක්මවා ගිය නිෂ්පාදන ලැයිස්තුවක් ලබා ගත යුතුය, උදාහරණයක් ලෙස, 100. ඔබට මෙම කාර්යය සඳහා ප්‍රති result ලය ක්‍රම කිහිපයකින් ලබා ගත හැකිය, එයින් වඩාත් ප්‍රශස්ත වන්නේ එක් ඉල්ලීමක් ක්‍රියාත්මක කිරීමයි:

නිෂ්පාදන තෝරන්න (නිෂ්පාදන තෝරන්න, එකතුව (මිලදී ගැනීමේ මුදල) ​​විකුණුම් වලින් ලැබෙන මුදල ලෙස) එකතුව > 100 කොහිද.

SQL - පාඩම 11. සම්පූර්ණ කාර්යයන්, ගණනය කළ තීරු සහ දර්ශන

සම්පූර්ණ ශ්‍රිත සංඛ්‍යානමය, සමස්ථ හෝ එකතු ශ්‍රිත ලෙසද හැඳින්වේ. මෙම ශ්‍රිතයන් තනි අගයක් ගණනය කිරීමට සහ ආපසු ලබා දීමට තන්තු මාලාවක් සකසයි. එවැනි කාර්යයන් පහක් පමණක් ඇත:
  • AVG() ශ්‍රිතය තීරුවක සාමාන්‍ය අගය ලබා දෙයි.

  • COUNT() ශ්‍රිතය තීරුවක ඇති පේළි ගණන ලබා දෙයි.

  • MAX() ශ්‍රිතය තීරුවක ඇති විශාලතම අගය ලබා දෙයි.

  • MIN() ශ්‍රිතය තීරුවේ කුඩාම අගය ලබා දෙයි.

  • SUM() ශ්‍රිතය තීරු අගයන්හි එකතුව ලබා දෙයි.

අපට දැනටමත් ඔවුන්ගෙන් එක් අයෙකු හමු වී ඇත - COUNT() - 8 පාඩමේදී. දැන් අපි අනෙක් අය හමුවෙමු. අපි හිතමු අපිට අපේ කඩේ තියෙන පොත් වල අවම, උපරිම සහ සාමාන්‍ය මිල දැනගන්න ඕන වුණා කියලා. එවිට මිල ගණන් වගුවෙන් ඔබ මිල තීරුව සඳහා අවම, උපරිම සහ සාමාන්ය අගයන් ගත යුතුය. ඉල්ලීම සරලයි:

මිල ගණන් වලින් MIN(මිල), MAX(මිල), AVG(මිල) තෝරන්න;

දැන්, අපට අවශ්‍ය වන්නේ "හවුස් ඔෆ් ප්‍රින්ටින්" (id=2) සැපයුම්කරු විසින් අප වෙත කොපමණ භාණ්ඩ ගෙනාවාද යන්න සොයා බැලීමටය. එවැනි ඉල්ලීමක් කිරීම එතරම් පහසු නැත. එය රචනා කරන්නේ කෙසේදැයි අපි සිතමු:

1. පළමුව, සැපයුම් (පැමිණෙන) වගුවෙන්, සැපයුම්කරු "ප්‍රින්ට් හවුස්" (id=2) විසින් සිදු කරන ලද බෙදාහැරීම් හඳුනාගැනීම් (id_incoming) තෝරන්න:

2. දැන් සැපයුම් ජර්නල් වගුවෙන් (magazine_incoming) ඔබට භාණ්ඩ (id_product) සහ ඒවායේ ප්‍රමාණයන් (ප්‍රමාණය) තෝරාගත යුතු අතර ඒවා අංක 1 හි ඇති බෙදාහැරීම්වලදී සිදු කරන ලදී. එනම්, 1 වන ස්ථානයෙන් විමසුම කැදලි බවට පත් වේ:

3. දැන් අපි මිල වගුවේ ගබඩා කර ඇති සොයාගත් නිෂ්පාදන සඳහා මිල ගණන් එකතු කළ යුතුය. එනම්, අපට id_product තීරුව භාවිතයෙන් සැපයුම් සඟරාව (magazine_incoming) සහ මිල වගුවලට සම්බන්ධ වීමට අවශ්‍ය වනු ඇත:

4. ලැබෙන වගුවේ ප්‍රමාණයේ තීරුව පැහැදිලිව නොමැත, එනම් ගණනය කළ තීරුව. එවැනි තීරු නිර්මාණය කිරීමේ හැකියාව MySQL හි සපයා ඇත. මෙය සිදු කිරීම සඳහා, ඔබ විසින් ගණනය කළ තීරුවේ නම සහ එය ගණනය කළ යුතු දේ විමසුමේ සඳහන් කළ යුතුය. අපගේ උදාහරණයේ දී, එවැනි තීරුවක් summa ලෙස හඳුන්වනු ලබන අතර, එය ප්රමාණය සහ මිල තීරු වල නිෂ්පාදිතය ගණනය කරනු ඇත. නව තීරුවේ නම AS යන වචනයෙන් වෙන් කර ඇත:

Magazine_incoming.id_product තෝරන්න, magazine_incoming.quantity, price.price, magazine_incoming.quantity*prices.price as summa as magazine_incoming, මිල ගණන් සඟරාව_incoming.id_product= price.id_product AND id_incoming= (SELECT id_incoming

5. නියමයි, අප කළ යුත්තේ සාරාංශ තීරුව එකතු කර අවසානයේ සැපයුම්කරු "හවුස් ඔෆ් ප්‍රින්ටින්" අපට කොපමණ භාණ්ඩ ගෙනාවාද යන්න සොයා බැලීමයි. SUM() ශ්‍රිතය භාවිතා කිරීමේ වාක්‍ය ඛණ්ඩය පහත පරිදි වේ:

වගුව_නමයෙන් එකතුව (තීරුව_නම) තෝරන්න;

තීරුවේ නම අපි දනිමු - සුම්මා, නමුත් එය විමසුමක ප්‍රතිඵලයක් බැවින් මේසයේ නම අප සතුව නොමැත. කුමක් කරන්න ද? එවැනි අවස්ථාවන් සඳහා MySQL හි Views ඇත. දසුනක් යනු අනන්‍ය නමක් ලබා දී ඇති සහ පසුකාලීන භාවිතය සඳහා දත්ත ගබඩාවක ගබඩා කළ හැකි තේරීම් විමසුමකි.

දර්ශනයක් නිර්මාණය කිරීමේ වාක්‍ය ඛණ්ඩය පහත පරිදි වේ:

ඉල්ලීම පරිදි VIEW view_name සාදන්න;

අපගේ ඉල්ලීම report_vendor නමින් දර්ශනයක් ලෙස සුරකිමු:

Magazine_incoming.id_product තෝරන්න, magazine_incoming.quantity, price.price, magazine_incoming.quantity*prices.price ලෙස VIEW report_vendor සාදන්න හෝ=2 );

6. දැන් ඔබට අවසාන ශ්‍රිතය SUM() භාවිතා කළ හැක.

වාර්‍තා_වෙළෙන්දාගෙන් එකතුව(සුමාව) තෝරන්න;

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

ගණනය කළ ක්ෂේත්ර (තීරු)

උදාහරණයක් භාවිතා කරමින්, අපි අද ගණිතමය ගණනය කළ ක්ෂේත්‍රයක් දෙස බැලුවෙමු. මෙහිදී ඔබට ගුණ කිරීමේ මෙහෙයුම (*) පමණක් නොව අඩු කිරීම (-), එකතු කිරීම (+) සහ බෙදීම (/) ද භාවිතා කළ හැකි බව එකතු කිරීමට කැමැත්තෙමි. වාක්‍ය ඛණ්ඩය පහත පරිදි වේ:

SELECT column_name 1, column_name 2, column_name 1 * column_name 2 AS counted_column_name FROM table_name;

දෙවන nuance යනු AS මූල පදයයි, අපි ගණනය කළ තීරුවේ නම සැකසීමට එය භාවිතා කළෙමු. ඇත්ත වශයෙන්ම, මෙම මූල පදය ඕනෑම තීරු සඳහා අන්වර්ථ නාම සැකසීමට භාවිතා කරයි. මෙය අවශ්ය වන්නේ ඇයි? කේත අඩු කිරීම සහ කියවීමේ හැකියාව සඳහා. උදාහරණයක් ලෙස, අපගේ දර්ශනය මේ ආකාරයෙන් විය හැකිය:

A.id_product, A.Quantity, B.price, A.quantity*B.price as summa as summa as a magazine_incoming AS A, AS B AS B HERE මිල ගණන් කොහෙද id_vendor=2);

මෙය වඩා කෙටි සහ පැහැදිලි බව එකඟ වන්න.

නිරූපණය

අපි දැනටමත් දර්ශන නිර්මාණය කිරීම සඳහා වාක්‍ය ඛණ්ඩය දෙස බැලුවෙමු. Views හැදුවට පස්සේ ඒවා tables විදියටම පාවිච්චි කරන්න පුළුවන්. එනම්, ඒවාට එරෙහිව විමසුම් ධාවනය කිරීම, දත්ත පෙරීම සහ වර්ග කිරීම සහ සමහර දර්ශන අනෙක් ඒවා සමඟ ඒකාබද්ධ කිරීම. එක් අතකින්, මෙය නිතර භාවිතා කරන ගබඩා කිරීම සඳහා ඉතා පහසු ක්රමයකි සංකීර්ණ විමසුම්(අපගේ උදාහරණයේ මෙන්).

නමුත් දර්ශන වගු නොවන බව මතක තබා ගන්න, එනම් ඒවා දත්ත ගබඩා නොකරයි, නමුත් ඒවා වෙනත් වගු වලින් පමණක් ලබා ගනී. එබැවින්, පළමුව, වගු වල දත්ත වෙනස් වන විට, ඉදිරිපත් කිරීමේ ප්රතිඵල ද වෙනස් වේ. දෙවනුව, දර්ශනයක් සඳහා ඉල්ලීමක් කළ විට, අවශ්‍ය දත්ත සොයනු ලැබේ, එනම්, DBMS හි ක්‍රියාකාරිත්වය අඩු වේ. එමනිසා, ඔබ ඒවා අපයෝජනය නොකළ යුතුය.

ඒ තුළ පෙළ පොතඔබ භාවිතා කරන ආකාරය ඉගෙන ගනු ඇත SUM කාර්යයවී SQL සේවාදායකය(Transact-SQL) වාක්‍ය ඛණ්ඩ සහ උදාහරණ සමඟ.

විස්තර

SQL සේවාදායකයේ (ගනුදෙනු-SQL) SUM කාර්යයප්‍රකාශනයක සම්පූර්ණ අගය ලබා දෙයි.

වාක්‍ය ඛණ්ඩය

SQL Server (Transact-SQL) හි SUM ශ්‍රිතය සඳහා වන වාක්‍ය ඛණ්ඩය වන්නේ:

හෝ තීරු එකකින් හෝ වැඩි ගණනකින් ප්‍රතිඵල සමූහගත කිරීමේදී SUM ශ්‍රිතය සඳහා වන වාක්‍ය ඛණ්ඩය වන්නේ:

පරාමිති හෝ තර්ක

ප්‍රකාශනය1 , ප්‍රකාශනය 2 , ... ප්‍රකාශන_n යනු SUM ශ්‍රිතයට ඇතුළත් නොවන ප්‍රකාශන වන අතර SQL ප්‍රකාශයේ අවසානයේ ඇති GROUP BY වගන්තියට ඇතුළත් කළ යුතුය.
aggregate_expression යනු එකතු කරනු ලබන තීරුව හෝ ප්‍රකාශනයයි.
වගු - ඔබට වාර්තා ලබා ගැනීමට අවශ්‍ය වගු. FROM වගන්තියේ ලැයිස්තුගත කර ඇති අවම වශයෙන් එක් වගුවක්වත් තිබිය යුතුය.
කොහෙද කොන්දේසි - විකල්ප. තෝරාගත් වාර්තා සඳහා සපුරාලිය යුතු කොන්දේසි මේවාය.

අයදුම්පත

SUM ශ්‍රිතය SQL සේවාදායකයේ (Transact-SQL) පහත අනුවාද වල භාවිතා කළ හැක:
SQL Server vNext, SQL Server 2016, SQL Server 2015, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, SQL Server 2005

එක් ක්ෂේත්‍රයක් සමඟ උදාහරණයක්

SQL Server (Transact-SQL) හි SUM ශ්‍රිතය භාවිතා කරන ආකාරය තේරුම් ගැනීමට SQL Server SUM ක්‍රියාකාරී උදාහරණ කිහිපයක් බලමු.

උදාහරණයක් ලෙස, 10 ට වඩා වැඩි සියලුම නිෂ්පාදනවල සම්පූර්ණ ප්‍රමාණය ඔබට සොයාගත හැකිය.

SUM ශ්‍රිතයේ මෙම උදාහරණයේදී, අපි SUM(ප්‍රමාණය) “මුළු ප්‍රමාණය” යන ප්‍රකාශනය අන්වර්ථ කර ඇත. ප්‍රතිඵල කට්ටලයක් ආපසු ලබා දෙන විට - "මුළු ප්‍රමාණය" ක්ෂේත්‍ර නාමය ලෙස දිස්වනු ඇත.

DISTINCT භාවිතා කිරීමේ උදාහරණය

ඔබට SUM ශ්‍රිතයේ DISTINCT ක්‍රියාකරු භාවිතා කළ හැක. උදාහරණයක් ලෙස පහත එක SQL ප්රකාශයවාර්ෂික වැටුප ඩොලර් 29,000 ට අඩු අද්විතීය වැටුප් අගයන් සමඟ මුළු වැටුප ආපසු ලබා දෙයි.

වැටුප් දෙක වසරකට ඩොලර් 24,000 නම්, SUM ශ්‍රිතයේ භාවිතා කරනු ලබන්නේ එම අගයන්ගෙන් එකක් පමණි.

සූත්රය භාවිතා කිරීමේ උදාහරණය

SUM ශ්‍රිතයේ අඩංගු ප්‍රකාශනය තනි ක්ෂේත්‍රයක් විය යුතු නැත. ඔබට සූත්රය ද භාවිතා කළ හැකිය. උදාහරණයක් ලෙස, ඔබට සම්පූර්ණ කොමිස් මුදල ගණනය කළ හැකිය.

ගනුදෙනු-SQL

ඇණවුම් වලින් "මුළු කොමිස්" ලෙස එකතුව (විකුණුම් * 0.03) තෝරන්න;

"මුළු කොමිස්" ලෙස එකතුව (විකුණුම් * 0.03 ) තෝරන්න

ඇණවුම් වලින්;

GROUP BY භාවිතා කිරීමේ උදාහරණය

සමහර අවස්ථාවලදී, ඔබට SUM ශ්‍රිතය සමඟ GROUP BY ක්‍රියාකරු භාවිතා කිරීමට අවශ්‍ය වනු ඇත.

සාරාංශ කිරීමට ඉගෙන ගනිමු. නැත, මේවා SQL අධ්‍යයනයේ ප්‍රතිඵල නොවේ, නමුත් දත්ත සමුදා වගු වල තීරු වල අගයන්ගේ ප්‍රතිඵල වේ. SQL සමස්ථ ශ්‍රිතයන් තනි ප්‍රතිඵල අගයක් නිපදවීමට තීරුවක අගයන් මත ක්‍රියා කරයි. වඩාත් බහුලව භාවිතා වන SQL සමස්ථ ශ්‍රිතයන් වන්නේ SUM, MIN, MAX, AVG, සහ COUNT ය. සමස්ථ කාර්යයන් භාවිතා කිරීමේ අවස්ථා දෙකක් අතර වෙනස හඳුනා ගැනීම අවශ්ය වේ. පළමුව, සමස්ථ ශ්‍රිතයන් තමන් විසින්ම භාවිතා කරන අතර තනි ප්‍රතිඵල අගයක් ආපසු ලබා දේ. දෙවනුව, සමස්ථ ශ්‍රිතයන් SQL GROUP වගන්තියෙන් භාවිතා කරයි, එනම්, එක් එක් කාණ්ඩයේ ප්‍රතිඵලයක් ලෙස ලැබෙන අගයන් ලබා ගැනීම සඳහා ක්ෂේත්‍ර (තීරු) අනුව කාණ්ඩගත කිරීම. කණ්ඩායම් කිරීමකින් තොරව සමස්ථ ශ්‍රිතයන් භාවිතා කිරීමේ අවස්ථා පළමුව සලකා බලමු.

SQL SUM ශ්‍රිතය

SQL SUM ශ්‍රිතය දත්ත සමුදා වගු තීරුවක ඇති අගයන්හි එකතුව ලබා දෙයි. එය යෙදිය හැක්කේ අගයන් සංඛ්‍යා සහිත තීරු සඳහා පමණි. SQL විමසුම්ලැබෙන එකතුව මේ ආකාරයට ආරම්භ කිරීමට:

එකතුව තෝරන්න (COLUMN_NAME) ...

මෙම ප්‍රකාශනය FROM (TABLE_NAME) විසින් අනුගමනය කරනු ලබන අතර, WHERE වගන්තිය භාවිතයෙන් කොන්දේසියක් නියම කළ හැක. අතිරේකව, තීරු නාමයට පෙර DISTINCT යෙදිය හැක, එයින් අදහස් වන්නේ එය පමණි අද්විතීය අගයන්. පෙරනිමියෙන්, සියලුම අගයන් සැලකිල්ලට ගනී (මේ සඳහා ඔබට විශේෂයෙන් DISTINCT නොව සියල්ල සඳහන් කළ හැකිය, නමුත් ALL යන වචනය අවශ්ය නොවේ).

ඔබට MS SQL සේවාදායකයේ මෙම පාඩමෙන් දත්ත සමුදා විමසුම් ධාවනය කිරීමට අවශ්‍ය නම්, නමුත් මෙම DBMS ඔබේ පරිගණකයේ ස්ථාපනය කර නොමැති නම්, ඔබට මෙම සබැඳියේ ඇති උපදෙස් භාවිතයෙන් එය ස්ථාපනය කළ හැකිය. .

මුලින්ම අපි සමාගමේ දත්ත ගබඩාව සමඟ වැඩ කරන්නෙමු - Company1. මෙම දත්ත සමුදාය නිර්මාණය කිරීම, එහි වගු සහ දත්ත සමඟ වගු පිරවීම සඳහා වන ස්ක්‍රිප්ට් මෙම සබැඳියේ ගොනුවේ ඇත. .

උදාහරණ 1.එහි අංශ සහ සේවකයින් පිළිබඳ දත්ත සහිත සමාගම් දත්ත ගබඩාවක් ඇත. කාර්ය මණ්ඩල වගුවේ සේවක වැටුප් පිළිබඳ දත්ත සහිත තීරුවක් ද ඇත. වගුවේ තේරීම මේ ආකාරයෙන් පෙනේ (පින්තූරය විශාල කිරීමට, වම් මූසික බොත්තම සමඟ එය මත ක්ලික් කරන්න):

සියලුම වැටුප් එකතුව ලබා ගැනීම සඳහා, අපි පහත විමසුම භාවිතා කරමු (MS SQL සේවාදායකයේ - පෙර ඉදිකිරීම් USE සමාගම1 සමඟ;):

කාර්ය මණ්ඩලයෙන් එකතුව (වැටුප්) තෝරන්න

මෙම විමසුම 287664.63 අගය ලබා දෙනු ඇත.

සහ දැන් . අභ්‍යාස වලදී අපි දැනටමත් කාර්යයන් සංකීර්ණ කිරීමට පටන් ගෙන ඇති අතර, ඒවා ප්‍රායෝගිකව හමු වූ ඒවාට සමීප කරයි.

SQL MIN කාර්යය

SQL MIN ශ්‍රිතය අංක වන තීරු මත ද ක්‍රියාත්මක වන අතර තීරුවේ ඇති සියලුම අගයන්හි අවම අගය ලබා දෙයි. මෙම ශ්‍රිතයට SUM ශ්‍රිතයට සමාන වාක්‍ය ඛණ්ඩයක් ඇත.

උදාහරණය 3.දත්ත සමුදාය සහ වගුව උදාහරණ 1 ට සමාන වේ.

අවම වශයෙන් දැන ගැනීමට අවශ්ය වේ වැටුප්අංක 42 සහිත දෙපාර්තමේන්තුවේ සේවකයින්. මෙය සිදු කිරීම සඳහා, පහත විමසුම ලියන්න (MS SQL සේවාදායකයේ - පෙර ඉදිකිරීම් USE company1 සමඟ;):

විමසුම 10505.90 අගය ලබා දෙනු ඇත.

නැවතත් සඳහා අභ්යාස ස්වාධීන තීරණය . මෙම සහ තවත් සමහර අභ්‍යාසවලදී, ඔබට කාර්ය මණ්ඩල වගුව පමණක් නොව, සමාගමේ අංශ පිළිබඳ දත්ත අඩංගු Org වගුව ද අවශ්‍ය වේ:


උදාහරණය 4.සමාගමේ දෙපාර්තමේන්තු පිළිබඳ දත්ත අඩංගු කාර්ය මණ්ඩල වගුවට Org වගුව එක් කෙරේ. බොස්ටන්හි පිහිටි දෙපාර්තමේන්තුවක එක් සේවකයෙකු විසින් සේවය කරන ලද අවම වසර ගණන මුද්රණය කරන්න.

SQL MAX ශ්‍රිතය

SQL MAX ශ්‍රිතය සමාන ලෙස ක්‍රියා කරන අතර සමාන වාක්‍ය ඛණ්ඩයක් ඇත, එය තීරුවක ඇති සියලුම අගයන් අතර උපරිම අගය තීරණය කිරීමට අවශ්‍ය වූ විට භාවිතා වේ.

උදාහරණ 5.

දෙපාර්තමේන්තු අංක 42 හි සේවකයින්ගේ උපරිම වැටුප අපට සොයාගත යුතුය. මෙය සිදු කිරීම සඳහා පහත විමසුම ලියන්න (MS SQL සේවාදායකයේ - USE company1 යන උපසර්ගය සමඟ;):

විමසුම 18352.80 අගය ලබා දෙනු ඇත

වෙලාව හරි ස්වාධීන විසඳුමක් සඳහා අභ්යාස.

උදාහරණ 6.අපි නැවතත් මේස දෙකක් සමඟ වැඩ කරන්නෙමු - කාර්ය මණ්ඩලය සහ සංවිධානය. දෙපාර්තමේන්තු (කොට්ඨාශ) නැගෙනහිර කණ්ඩායමට අයත් දෙපාර්තමේන්තුවේ එක් සේවකයෙකුට ලැබුණු දෙපාර්තමේන්තුවේ නම සහ කොමිස් මුදලේ උපරිම වටිනාකම ප්රදර්ශනය කරන්න. භාවිත එක්වන්න (එක්වන වගු) .

SQL AVG ශ්‍රිතය

විස්තර කර ඇති පෙර ශ්‍රිත සඳහා වාක්‍ය ඛණ්ඩය සම්බන්ධයෙන් සඳහන් කර ඇති දේ SQL AVG ශ්‍රිතය සඳහාද සත්‍ය වේ. මෙම ශ්‍රිතය තීරුවක ඇති සියලුම අගයන්හි සාමාන්‍යය ලබා දෙයි.

උදාහරණ 7.දත්ත සමුදාය සහ වගුව පෙර උදාහරණ වලට සමාන වේ.

දෙපාර්තමේන්තු අංක 42 හි සේවකයින්ගේ සාමාන්‍ය සේවා කාලය සොයා ගැනීමට ඔබට අවශ්‍ය යැයි සිතමු. මෙය සිදු කිරීම සඳහා, පහත විමසුම ලියන්න (MS SQL සේවාදායකයේ - පෙර ඉදිකිරීම් USE සමාගම1 සමඟ;):

ප්රතිඵලය 6.33 වනු ඇත

උදාහරණ 8.අපි එක මේසයක් සමඟ වැඩ කරන්නෙමු - කාර්ය මණ්ඩලය. වසර 4 සිට 6 දක්වා පළපුරුද්ද සහිත සේවකයින්ගේ සාමාන්‍ය වැටුප පෙන්වන්න.

SQL COUNT කාර්යය

SQL COUNT ශ්‍රිතය දත්ත සමුදා වගුවක ඇති වාර්තා ගණන ලබා දෙයි. ඔබ විමසුමේ SELECT COUNT(COLUMN_NAME) සඳහන් කළහොත්, ප්‍රතිඵලය වනුයේ තීරු අගය NULL (නිර්වචනය නොකළ) වන වාර්තා සැලකිල්ලට නොගෙන වාර්තා ගණනයි. ඔබ තර්කයක් ලෙස තරු ලකුණක් භාවිතා කර SELECT COUNT(*) ... විමසුමක් ආරම්භ කරන්නේ නම්, ප්‍රතිඵලය වනුයේ වගුවේ සියලුම වාර්තා (පේළි) ගණනයි.

උදාහරණ 9.දත්ත සමුදාය සහ වගුව පෙර උදාහරණ වලට සමාන වේ.

ඔබට කොමිස් ලැබෙන සියලුම සේවකයින්ගේ සංඛ්යාව දැන ගැනීමට අවශ්ය වේ. Comm තීරු අගයන් NULL නොවන සේවකයින් සංඛ්‍යාව පහත විමසුම මගින් ආපසු ලබා දෙනු ඇත (MS SQL සේවාදායකයේ - USE company1 යන උපසර්ගය සමඟ;):

කාර්ය මණ්ඩලයෙන් COUNT (කොම්) තෝරන්න

ප්රතිඵලය 11 වනු ඇත.

උදාහරණ 10.දත්ත සමුදාය සහ වගුව පෙර උදාහරණ වලට සමාන වේ.

ඔබට වගුවේ ඇති මුළු වාර්තා ගණන සොයා ගැනීමට අවශ්‍ය නම්, COUNT ශ්‍රිතයට තර්කයක් ලෙස තරු ලකුණක් සහිත විමසුමක් භාවිතා කරන්න (MS SQL සේවාදායකයේ - පෙර ඉදිකිරීම් USE සමාගම1 සමඟ;):

කාර්ය මණ්ඩලයෙන් COUNT (*) තෝරන්න

ප්රතිඵලය 17 වනු ඇත.

ඊළඟ එකේ ස්වාධීන විසඳුමක් සඳහා අභ්යාසඔබට උප විමසුමක් භාවිතා කිරීමට අවශ්‍ය වනු ඇත.

උදාහරණ 11.අපි එක මේසයක් සමඟ වැඩ කරන්නෙමු - කාර්ය මණ්ඩලය. සැලසුම් දෙපාර්තමේන්තුවේ (තැන්න) සේවක සංඛ්‍යාව පෙන්වන්න.

SQL GROUP සමඟ සමස්ත කාර්යයන්

දැන් අපි බලමු SQL GROUP BY ප්‍රකාශය සමඟ සමස්ථ ශ්‍රිතයන් භාවිතා කිරීම. දත්ත සමුදා වගුවක තීරු අනුව ප්‍රතිඵල අගයන් කාණ්ඩ කිරීමට SQL GROUP BY ප්‍රකාශය භාවිතා කරයි. වෙබ් අඩවිය සතුව ඇත මෙම ක්රියාකරු සඳහා වෙන වෙනම කැප වූ පාඩමක් .

අපි "දැන්වීම් ද්වාරය 1" දත්ත සමුදාය සමඟ වැඩ කරන්නෙමු. මෙම දත්ත සමුදාය, එහි වගුව සහ දත්ත වගුව පිරවීම සඳහා වන ස්ක්‍රිප්ට් මෙම සබැඳියේ ගොනුවේ ඇත .

උදාහරණ 12.ඉතින්, වෙළඳ දැන්වීම් ද්වාරයෙහි දත්ත ගබඩාවක් තිබේ. සතිය සඳහා ඉදිරිපත් කරන ලද දැන්වීම් පිළිබඳ දත්ත අඩංගු දැන්වීම් වගුවක් එහි ඇත. ප්‍රවර්ග තීරුවේ විශාල දැන්වීම් ප්‍රවර්ග පිළිබඳ දත්ත අඩංගු වේ (උදාහරණයක් ලෙස, නිශ්චල දේපල), සහ කොටස් තීරුවේ කාණ්ඩවලට ඇතුළත් කර ඇති කුඩා කොටස් පිළිබඳ දත්ත අඩංගු වේ (උදාහරණයක් ලෙස, මහල් නිවාස සහ ගිම්හාන නිවාස කොටස් නිශ්චල දේපල කාණ්ඩයේ කොටස් වේ). ඒකක තීරුවේ ඉදිරිපත් කරන ලද දැන්වීම් සංඛ්‍යාව පිළිබඳ දත්ත අඩංගු වන අතර මුදල් තීරුවේ දැන්වීම් ඉදිරිපත් කිරීම සඳහා ලැබුණු මුදල් ප්‍රමාණය පිළිබඳ දත්ත අඩංගු වේ.

වර්ගයකොටසඒකකමුදල
ප්රවාහනමෝටර් රථ110 17600
දේපළ වෙළදාම්මහල් නිවාස89 18690
දේපළ වෙළදාම්Dachas57 11970
ප්රවාහනයතුරු පැදි131 20960
ඉදිකිරීම් ද්රව්යපුවරු68 7140
විදුලි ඉංජිනේරුරූපවාහිනි127 8255
විදුලි ඉංජිනේරුශීතකරණ137 8905
ඉදිකිරීම් ද්රව්යරෙජිප්ස්112 11760
විවේකයපොත්96 6240
දේපළ වෙළදාම්නිවසේ දී47 9870
විවේකයසංගීත117 7605
විවේකයක්රීඩා41 2665

SQL GROUP BY ප්‍රකාශය භාවිතයෙන්, එක් එක් කාණ්ඩයේ දැන්වීම් පළ කිරීමෙන් උපයන මුදල් ප්‍රමාණය සොයා ගන්න. අපි පහත විමසුම ලියන්නෙමු (MS SQL සේවාදායකයේ - පෙර ඉදිකිරීම් USE adportal1 සමඟ;):

ප්‍රවර්ගය, එකතුව (මුදල්) ප්‍රවර්ග අනුව දැන්වීම් සමූහයෙන් මුදල් ලෙස තෝරන්න

උදාහරණ 13.දත්ත සමුදාය සහ වගුව පෙර උදාහරණයේ මෙන් ම වේ.

SQL GROUP by ප්‍රකාශය භාවිතා කරමින්, එක් එක් කාණ්ඩයේ වැඩිපුරම ලැයිස්තුගත කර ඇත්තේ කුමන කොටසදැයි සොයා බලන්න. අපි පහත විමසුම ලියන්නෙමු (MS SQL සේවාදායකයේ - පෙර ඉදිකිරීම් USE adportal1 සමඟ;):

ප්‍රවර්ගය, කොටස, උපරිම (ඒකක) ප්‍රවර්ග අනුව දැන්වීම් සමූහයෙන් තෝරන්න

ප්රතිඵලය පහත වගුව වනු ඇත:

සම්පූර්ණ සහ තනි අගයන් එක් වගුවකින් ලබා ගත හැක UNION ක්රියාකරු භාවිතයෙන් විමසුම් ප්රතිඵල ඒකාබද්ධ කිරීම .

සම්බන්ධතා දත්ත සමුදායන් සහ SQL භාෂාව




ඉහල