බහු තීරු මත සමූහය භාවිතා කිරීම


1075

කාරණය මට තේරෙනවා GROUP BY x.

නමුත් GROUP BY x, yවැඩ කරන්නේ කෙසේද, එයින් අදහස් කරන්නේ කුමක්ද?


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

Answers:


2079

Group By Xඅදහස් එක් කණ්ඩායමේ X සඳහා එම අගය සමඟ සිටි සියල්ලෝ ය .

Group By X, Yඅදහස් එක් කණ්ඩායමේ X හා Y යන දෙකම සඳහා එකම අගයන් සමඟ සිටි සියල්ලෝ ය .

නිදසුනක් භාවිතා කිරීම නිදර්ශනය කිරීම සඳහා, විශ්ව විද්‍යාලයක කුමන විෂයයට සහභාගී වන්නේ කවුරුන්ද යන්න සමඟ පහත වගුව අප සතුව ඇතැයි කියමු.

Table: Subject_Selection

+---------+----------+----------+
| Subject | Semester | Attendee |
+---------+----------+----------+
| ITB001  |        1 | John     |
| ITB001  |        1 | Bob      |
| ITB001  |        1 | Mickey   |
| ITB001  |        2 | Jenny    |
| ITB001  |        2 | James    |
| MKB114  |        1 | John     |
| MKB114  |        1 | Erica    |
+---------+----------+----------+

ඔබ group byවිෂය තීරුවේ පමණක් භාවිතා කරන විට ; කියන්න:

select Subject, Count(*)
from Subject_Selection
group by Subject

ඔබට මෙවැනි දෙයක් ලැබෙනු ඇත:

+---------+-------+
| Subject | Count |
+---------+-------+
| ITB001  |     5 |
| MKB114  |     2 |
+---------+-------+

... ITB001 සඳහා ඇතුළත් කිරීම් 5 ක් සහ MKB114 සඳහා 2 ක් ඇති බැවිනි

අපි group byතීරු දෙකකට නම්:

select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester

අපට මෙය ලැබෙනු ඇත:

+---------+----------+-------+
| Subject | Semester | Count |
+---------+----------+-------+
| ITB001  |        1 |     3 |
| ITB001  |        2 |     2 |
| MKB114  |        1 |     2 |
+---------+----------+-------+

මෙයට හේතුව, අපි තීරු දෙකකින් කාණ්ඩ කරන විට, එය කියනුයේ “එකම විෂය හා සෙමෙස්ටර් ඇති සියල්ලන්ම එකම කණ්ඩායමේ සිටින පරිදි ඒවා කාණ්ඩ කරන්න, ඉන්පසු සියලු සමස්ත කාර්යයන් ගණනය කරන්න (ගණන්, එකතුව, සාමාන්‍යය, ආදිය). ) එම එක් එක් කණ්ඩායම් සඳහා " . මෙම උදාහරණයේ දී, මෙය පෙන්නුම් කරන්නේ, අප ඔවුන් ගණන් කරන විට, පළමු වාරයේ ITB001 කරන පුද්ගලයින් තිදෙනෙකු ද , දෙදෙනෙකු එය 2 වන වාරයේ ද කරන බව ය. MKB114 කරන පුද්ගලයින් දෙදෙනාම 1 වන වාරයේ සිටින බැවින්, දෙවන වාරය සඳහා පේළිය ("MKB114, සෙමෙස්ටර් 2" කාණ්ඩයට දත්ත ගැලපෙන්නේ නැත)

බලාපොරොත්තුවෙන් එය අර්ථවත් කරයි.


11
@Smashery: ඉතින් මේ බව ද ඉන් අදහස් කරන්නේ කුමක්ද GROUP BY A,Bලෙස සමාන වේ GROUP BY B,A?
tumchaaditya

24
ඔව්, එය එසේ වේ. ඔවුන් එකිනෙකා තරම් කාර්යක්ෂමද යන්න මට නිශ්චිතවම පැවසිය නොහැක, නමුත් ඔවුන් එකම ප්‍රති result ලය ලබා දෙනු ඇත, ඔව්.
ස්මෂරි

2
අතර වෙනසක් ඇති GROUP BY a, bබවත් GROUP BY a AND b, දෙවැන්න ලැයිස්තුගත කර ඇත්තේ එකම අන්තර්ගතයක් සහිත කාණ්ඩගත අයිතම පමණක් බවත් “යටි කණ්ඩායම්” නොමැති බවත් මෙහි සඳහන් කළ යුතුය . මෙම අවස්ථාවේ දී ප්‍රතිදානය පළමු එක හා සමාන වේ.
Dwza

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

3
හොඳයි, a, b හා සමූහය b මගින්, එකම
fanny

35

මෙම GROUP BYවගන්තිය තීරු එකක් හෝ ඊට වැඩි වන විට එහි ප්රතිඵලයක්-සකසා ගැනීමට සමස්ත කාර්යයන් සමඟ එක්ව භාවිතා කරයි. උදා:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

මෙම නියෝගය මතක තබා ගන්න:

1) තෝරන්න (දත්ත සමුදායකින් දත්ත තෝරා ගැනීමට භාවිතා කරයි)

2) FROM (වගු ලැයිස්තුගත කිරීම සඳහා වගන්තිය භාවිතා වේ)

3) WHERE (වාර්තා පෙරීමට වගන්තිය භාවිතා කරයි)

4) GROUP BY (බහුවිධ වාර්තා හරහා දත්ත එක්රැස් කිරීම සහ තීරු එකක් හෝ කිහිපයක් මගින් ප්‍රති group ල කාණ්ඩගත කිරීම සඳහා තෝරාගත් ප්‍රකාශයක වගන්තිය භාවිතා කළ හැකිය)

5) තිබීම (ආපසු එන පේළි කාණ්ඩය කොන්දේසිය සත්‍ය වූ අයට පමණක් සීමා කිරීම සඳහා GROUP BY වගන්තිය සමඟ ඒකාබද්ධව වගන්තිය භාවිතා වේ)

6) ඇණවුම් කරන්න (ප්‍රති result ල කට්ටලය වර්ග කිරීම සඳහා යතුරු පදය භාවිතා වේ)

ඔබ සමස්ථ කාර්යයන් භාවිතා කරන්නේ නම් ඔබට මේ සියල්ල භාවිතා කළ හැකි අතර, ඒවා සැකසිය යුතු අනුපිළිවෙල මෙයයි, එසේ නොමැතිනම් ඔබට දෝෂයක් ලබා ගත හැකිය.

සමස්ථ කාර්යයන්:

දී ඇති තීරුවක කුඩාම අගය MIN මඟින් ලබා දෙයි

දී ඇති තීරුවක ඇති සංඛ්‍යාත්මක අගයන්ගේ එකතුව SUM විසින් ආපසු ලබා දේ

AVG දී ඇති තීරුවක සාමාන්‍ය අගය ලබා දෙයි

COUNT විසින් ලබා දී ඇති තීරුවක ඇති මුළු අගයන් ගණන නැවත ලබා දෙයි

COUNT (*) වගුවක පේළි ගණන නැවත ලබා දෙයි


2
නමුත් අපි තීරු 2 තබන්නේ කොතැනද, තීරු 2 / වැඩි මත පදනම්ව එකතු කරන්නේ කෙසේද යන්න ප්‍රශ්නයයි
චෛත්‍ය බපට්

හායි චෛත්‍යය, මෙය ඔබ අසන්නේ දැයි මම නොදනිමි, නමුත් මම ඔබට උදාහරණ කිහිපයක් දෙන්නම්. ඔබ සතුව නිෂ්පාදන වගුවක් තිබේ නම්, මේ ආකාරයෙන් සමස්ත කාර්යයන් භාවිතා කරයි, පහත දැක්වෙන්නේ අවස්ථා දෙකකි: නිෂ්පාදන වලින් AVG (instock) තෝරන්න; මෙය නිෂ්පාදන වගුවේ තොගයේ සාමාන්‍ය ඒකක ගණනය කරනු ඇත. දැන් ඔබට නිෂ්පාදන කාණ්ඩය අනුව තොගයේ ඇති ඒකක ගණනය කිරීමට අවශ්‍යය, ඔබට මේ ආකාරයේ GROUP BY වගන්තිය සමඟ AVG ශ්‍රිතය භාවිතා කළ යුතුය: කාණ්ඩය තෝරන්න නිෂ්පාදන, AVG (ඉන්ස්ටොක්) නිෂ්පාදන වලින් කාණ්ඩය කාණ්ඩයෙන්;
එස්. මයෝල්

1
මෙය ප්‍රශ්නයට දුරස්ථව පවා පිළිතුරු සපයන්නේ නැත ... මෙහි ඇති ප්‍රශ්නය නම්, ලබා දී ඇති උදාහරණයේ පැහැදිලි කර ඇති පරිදි “විෂය” සහ “අධ්‍යයන වාරය” යන දම්වැල් කාණ්ඩගත කිරීම එකවර ලබා
ගන්නේ කෙසේද යන්නයි
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.