MySQL MAX ක්‍රියාකාරකම පැහැදිලි කිරීම: ව්‍යවස්ථාව, උදාහරණ, GROUP BY, සහ කාර්ය සාධන වැඩිදියුණු කිරීම

目次

1. හැඳින්වීම

MySQL යනු ලොව පුරා විශාල වශයෙන් භාවිතා කරන දත්ත සමුදාය කළමනාකරණ පද්ධතියකි. එහි බොහෝ විශේෂාංග අතර, MAX ශ්‍රිතය යනු දත්ත විශ්ලේෂණය සහ වාර්තා ජනනය සඳහා බහුලව භාවිතා වන වැදගත් සාගත ශ්‍රිතයකි. මෙම ශ්‍රිතය භාවිතා කිරීමෙන්, ඔබට නිශ්චිත කොලමක උපරිම අගය ලේසියෙන් ලබා ගත හැක.

මෙම ලිපිය MySQL MAX ශ්‍රිතයේ මූලික භාවිතය සිට උසස් උදාහරණ සහ වැදගත් සලකා බැලීම් දක්වා සියල්ල පැහැදිලිව පැහැදිලි කරයි. එය ආරම්භක සහ මධ්‍යම පරිශීලකයින් දෙකටම උපකාරී වීමට සකස් කර ඇති බැවින්, එය ආදර්ශයක් ලෙස භාවිතා කිරීමට වග බලා ගන්න.

2. MAX ශ්‍රිතයේ මූලික භාවිතය

MAX ශ්‍රිතය සංඛ්‍යාත්මක අගයන්, දිනයන් සහ වචන මාලා ඇතුළු විවිධ දත්ත වර්ග සමඟ භාවිතා කළ හැක. මෙම කොටසේදී, අපි මූලික භාවිතය විස්තරාත්මකව පැහැදිලි කරමු.

MAX ශ්‍රිතයේ ව්‍යාකරණය

පහත දැක්වෙන්නේ MAX ශ්‍රිතයේ මූලික ව්‍යාකරණයයි.

SELECT MAX(column_name) FROM table_name;

මෙම ව්‍යාකරණය භාවිතා කිරීමෙන්, ඔබට නිශ්චිත කොලමක උපරිම අගය ලබා ගත හැක.

උදාහරණය: සංඛ්‍යාත්මක කොලමක් සමඟ MAX භාවිතය

පහත උදාහරණයේදී, සේවකයින්ගේ වගුවෙන් ඉහළම වැටුප ලබා ගනී.

SELECT MAX(salary) FROM employees;

අවුට්පුට් උදාහරණය:

MAX(salary)
120000

මෙම ප්‍රතිඵලය salary කොලමේ උපරිම අගය 120000 බව පෙන්වයි.

උදාහරණය: දිනය කොලමක් සමඟ MAX භාවිතය

සේවකයින්ගේ නවතම බඳවා ගැනීමේ දිනය ලබා ගැනීමට, පහත ප්‍රශ්නය භාවිතා කරන්න:

SELECT MAX(hire_date) FROM employees;

අවුට්පුට් උදාහරණය:

MAX(hire_date)
2025-01-01

මෙම ප්‍රතිඵලය නවතම බඳවා ගැනීමේ දිනය 2025-01-01 බව පෙන්වයි.

උදාහරණය: වචන මාලා කොලමක් සමඟ MAX භාවිතය

MAX ශ්‍රිතය වචන මාලා කොලම් සමඟ ද භාවිතා කළ හැක. වචන මාලා සඳහා, එය වචනාච්චේද (ශබ්දකෝෂ) අනුපිළිවෙලේ අන්තිමට පෙනෙන අගය ආපසු දෙයි.

SELECT MAX(last_name) FROM employees;

අවුට්පුට් උදාහරණය:

MAX(last_name)
Yamamoto

මෙම ප්‍රතිඵලය Yamamoto යනු අකුරු (වචනාච්චේද) අනුපිළිවෙලේ අන්තිමට පෙනෙන නම බව පෙන්වයි.

3. තත්ත්ව සමඟ උපරිම අගය ලබා ගැනීම

MAX ශ්‍රිතය තත්ත්ව සමඟ ද භාවිතා කළ හැක. මෙම කොටසේදී, අපි නිශ්චිත තත්ත්ව යටතේ උපරිම අගය ලබා ගන්නේ කෙසේදැයි පැහැදිලි කරමු.

WHERE කොටුව සමඟ ඒකාබද්ධ කිරීම

නිශ්චිත තත්ත්ව සමඟ උපරිම අගය ලබා ගැනීමට, WHERE කොටුව භාවිතා කරන්න.

උදාහරණය: දෙපාර්තමේන්තු ID 10 වන සේවකයින් අතර ඉහළම වැටුප ලබා ගන්න

SELECT MAX(salary) FROM employees WHERE department_id = 10;

අවුට්පුට් උදාහරණය:

MAX(salary)
90000

මෙම ප්‍රශ්නය දෙපාර්තමේන්තු ID 10 වන සේවකයින් අතර උපරිම වැටුප ලබා ගනී.

ප්‍රායෝගික ව්‍යාපාරික උදාහරණය

ඔබට එකම ව්‍යාකරණය භාවිතා කරමින් නිශ්චිත ව්‍යාපෘතියකට සම්බන්ධ උපරිම පිරිවැය ලබා ගත හැක.

SELECT MAX(cost) FROM projects WHERE project_status = 'active';

මෙම ප්‍රශ්නය active තත්ත්වය ඇති ව්‍යාපෘති අතර උපරිම පිරිවැය ලබා ගනී.

4. ජඟ සඳහා උපරිම අගය ලබා ගන්නේ කෙසේද

MySQL හි GROUP BY කොටුව භාවිතා කිරීමෙන්, ඔබට ජඟ සඳහා උපරිම අගය ලබා ගත හැක. උදාහරණයක් ලෙස, දෙපාර්තමේන්තුවකට හෝ මාසයකට උපරිම විකුණුම් වැනි ජඟ කිරීමෙන් දත්ත විශ්ලේෂණය කිරීමේදී මෙය ඉතා උපකාරී වේ. මෙම කොටසේදී, අපි ජඟ අනුව උපරිම අගයන් විස්තරාත්මකව ලබා ගන්නේ කෙසේදැයි පැහැදිලි කරමු.

මූලික ව්‍යාකරණය

ජඟ සඳහා උපරිම අගය ලබා ගැනීමට, ප්‍රශ්නය පහත පරිදි ලියන්න:

SELECT grouping_column, MAX(target_column)
FROM table_name
GROUP BY grouping_column;

මෙම ව්‍යාකරණය සමඟ, MySQL නිශ්චිත කොලම මත පදනම්ව දත්ත ජඟ කරයි සහ ජඟය තුළ උපරිම අගය ආපසු දෙයි.

උදාහරණය: දෙපාර්තමේන්තුවකට ඉහළම වැටුප ලබා ගැනීම

පහත ප්‍රශ්නය සේවකයින්ගේ වගුවෙන් දෙපාර්තමේන්තුවකට ඉහළම වැටුප ලබා ගනී.

SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id;

අවුට්පුට් උදාහරණය:

department_idMAX(salary)
1120000
290000
380000

මෙම ප්‍රතිඵලය එක් එක් දෙපාර්තමේන්තුව (department_id) සඳහා උපරිම වැටුප (MAX(salary)) පෙන්වයි.

උදාහරණය: මාසයකට උපරිම විකුණුම් ලබා ගැනීම

විකුණුම් මේසයකින් සෑම මාසයකටම උපරිම විකුණුම් මුදල ලබා ගැනීම සඳහා, විමසුම ලියන්න පහත පරිදි:

SELECT DATE_FORMAT(sale_date, '%Y-%m') AS sale_month, MAX(amount)
FROM sales
GROUP BY sale_month;

අභිරුචිකරණය:

sale_monthMAX(amount)
2025-0150000
2025-0270000
2025-0360000

මෙම විමසුමේදී, sale_date සිලැට් එක වර්ෂ-මාසය (%Y-%m) ලෙස ආකෘතිකරණය කර ඇති අතර, සෑම මාසයකටම උපරිම විකුණුම් මුදල ලබා ගනී.

GROUP BY භාවිතා කිරීමේදී වැදගත් සටහන්

  1. SELECT ප්‍රකාශනයේ ඇතුළත් කරන ලද සිලැට්වලට ඇති සීමාවන් GROUP BY කොටස භාවිතා කරන විට, SELECT ප්‍රකාශනයේ ඇතුළත් කරන ලද සිලැට්වල එකක් පහත ආකාරයකින් එකක් විය යුතුය:
  • GROUP BY කොටසේ දක්වා ඇති සිලැට්
  • සාගතික ක්‍රියාකාරකෂ් (උදා: MAX, SUM, COUNT, ආදිය) උදාහරණය: පහත විමසුම දෝෂයක් ඇති කරයි.
    SELECT department_id, salary
    FROM employees
    GROUP BY department_id;
    

කරුණ: salary සාගතික ක්‍රියාකාරකෂ් හෝ GROUP BY කොටසේ ඇතුළත් නොවේ.

  1. NULL වල්‍යූව්ල සම්බන්ධ කිරීම සමූහගත කිරීමේ සිලැට් එකේ NULL වල්‍යූව්ල ඇති නම්, ඒ NULL වල්‍යූව්ල වෙනම සමූහයක් ලෙස සැලකේ. උදාහරණය: NULL දෙපාර්තමේන්තු ID ඇති වාර්තා ද වෙනම සමූහයක් ලෙස ගණනය කෙරේ.
  2. ** කාර්ය සාධනය වැඩිදියුණු කිරීම** විශාල දත්ත ප්‍රමාණයක් සමූහගත කිරීමේදී, සුචිකරණ භාවිතා කිරීමෙන් විමසුමේ කාර්ය සාධනය වැඩිදියුණු කළ හැක. අවශ්‍ය පරිදි සුචිකරණ එකතු කරන්න.

5. උපරිම වල්‍යූව සහිත සම්පූර්ණ වාර්තාව ලබා ගැනීමේ ක්‍රමය

MySQL MAX ශක්තිය භාවිතා කිරීමෙන් ඔබට විශේෂිත සිලැට් එකක උපරිම වල්‍යූව ලබා ගත හැක. නමුත් එය උපරිම වල්‍යූව සහිත සම්පූර්ණ වාර්තාව ස්වයංක්‍රීයව ආපසු නොදෙයි. සැබෑ ලෝක දත්ත විශ්ලේෂණය සහ යෙදුම්වලදී, ඔබට බොහෝ විට උපරිම වල්‍යූව තමයි පමණක් නොව, අනෙකුත් සිලැට්වලින් සම්බන්ධ තොරතුරු ද අවශ්‍ය වේ.

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

ක්‍රමය 1: උපවිමසුමක් භාවිතා කිරීම

ඔබට විශේෂිත සිලැට් එකක උපරිම වල්‍යූව සහිත වාර්තා ලබා ගැනීම සඳහා උපවිමසුමක් භාවිතා කළ හැක.

උදාහරණය: ඉහළම වැටුප්ල්ල ඇති සේවකයාගේ තොරතුරු ලබා ගැනීම

SELECT *
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees);

අභිරුචිකරණය:

employee_idnamesalarydepartment_id
101Tanaka1200001

මෙම විමසුම ක්‍රියා කරන්නේ කෙසේද:

  1. උපවිමසුම (SELECT MAX(salary) FROM employees) ඉහළම වැටුප්ල්ල ලබා ගනී.
  2. බාහිර විමසුම එම ඉහළම වැටුප්ල්ලට ගැලපෙන සම්පූර්ණ වාර්තාව ලබා ගනී.

ක්‍රමය 2: JOIN භාවිතා කිරීම

JOIN භාවිතා කිරීමෙන් ඔබට වඩා නම්‍යශීලී විමසුම් සාදා ගත හැක.

උදාහරණය: දෙපාර්තමේන්තුවකට ඉහළම වැටුප්ල්ල ඇති සේවකයින් ලබා ගැනීම

SELECT e.*
FROM employees e
JOIN (
    SELECT department_id, MAX(salary) AS max_salary
    FROM employees
    GROUP BY department_id
) subquery
ON e.department_id = subquery.department_id 
AND e.salary = subquery.max_salary;

අභිරුචිකරණය:

employee_idnamesalarydepartment_id
101Tanaka1200001
202Suzuki900002

මෙම විමසුම ක්‍රියා කරන්නේ කෙසේද:

  1. උපවිමසුම සෑම දෙපාර්තමේන්තුවකටම ඉහළම වැටුප්ල්ල ගණනය කරයි.
  2. ප්‍රධාන විමසුම එම උපරිම වැටුප්ල්ලවලට ගැලපෙන සම්පූර්ණ සේවක වාර්තා ලබා ගනී.

ක්‍රමය 3: වින්ඩෝ ශක්ති (MySQL 8.0+)

MySQL 8.0 සහ පසුව, ඔබට වින්ඩෝ ශක්ති භාවිතා කරමින් උපරිම වල්‍යූව සහිත වාර්තා වඩා සංක්ෂිප්තව සහ කාර්යක්ෂමව ලබා ගත හැක.

උදාහරණය: දෙපාර්තමේන්තුවකට ඉහළම වැටුප්ල්ල ඇති සේවකයින් ලබා ගැනීම

SELECT employee_id, name, salary, department_id
FROM (
    SELECT *,
           RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rnk
    FROM employees
) ranked
WHERE rnk = 1;

අභිරුචිකරණය:

employee_idnamesalarydepartment_id
101Tanaka1200001
202Suzuki900002

මෙම විමසුම ක්‍රියා කරන්නේ කෙසේද:

  1. RANK() ශක්තිය සෑම දෙපාර්තමේන්තුවකදීම වැටුප්ල්ල අපසරන ක්‍රමයට අනුපිළිවෙලට සකසයි.
  2. බාහිර විමසුම ශ්‍රේණිගත කිරීම 1 වන (උපරිම වල්‍යූව සහිත වාර්තා) ලබා ගනී.

වැදගත් සටහන්

  1. උපරිම වල්‍යූව බෙදා ගන්නා බහු වාර්තා තිබේ නම්
  • එකම උපරිම වල්‍යූව බෙදා ගන්නා බහු වාර්තා තිබේ නම්, ඕනෑම ක්‍රමයකින් ගැලපෙන සියලුම වාර්තා ආපසු දෙනු ලැබේ. උදාහරණය:
    SELECT *
    FROM employees
    WHERE salary = (SELECT MAX(salary) FROM employees);
    

අභිරුචිකරණය:

employee_idnamesalarydepartment_id
101Tanaka1200001
102Sato1200001
  1. කාර්ය සාධනය වැඩිදියුණු කිරීම
  • විශාල දත්ත කට්ටලවල උප‑විමසුම් (subqueries) හෝ JOINs භාවිතා කිරීම කාර්ය සාධනය අඩු කරයි.
  • සුදුසු ඉන්ඩෙක්සිං කිරීම විමසුම් ක්‍රියාත්මක වේගය ගණනාවෙන් වැඩි කරයි.

ප්‍රායෝගික ව්‍යාපාරික උදාහරණ

  1. ඉහළම මිල ඇති නිෂ්පාදනය ලබා ගැනීම
    SELECT *
    FROM products
    WHERE price = (SELECT MAX(price) FROM products);
    
  1. ව්‍යාපෘතියකට උපරිම වියදමේ විස්තරාත්මක තොරතුරු ලබා ගැනීම
    SELECT p.*
    FROM projects p
    JOIN (
        SELECT project_id, MAX(cost) AS max_cost
        FROM project_costs
        GROUP BY project_id
    ) subquery
    ON p.project_id = subquery.project_id 
    AND p.cost = subquery.max_cost;
    

6. MAX ක්‍රියාවලිය භාවිතා කරන විට වැදගත් සැලකිලිමත් කරුණු

MySQL MAX ක්‍රියාවලිය ඉතා ප්‍රයෝජනවත් එකතු කිරීමේ ක්‍රියාවලියක් වන නමුත්, එය භාවිතා කරන විට මතක තබාගත යුතු වැදගත් කරුණු කිහිපයක් ඇත. දත්ත ලක්ෂණ, කාර්ය සාධන බලපෑම්, සහ NULL අගයන් කෙසේ හසුරවන්නේද යන්න අවබෝධ කර ගැනීම, වැරදි ප්‍රතිඵල සහ කාර්ය සාධන අඩු වීම වැලැක්වීමට උපකාරී වේ. මෙම කොටසේ, MAX ක්‍රියාවලිය භාවිතා කරන විට ප්‍රධාන සැලකිලිමත් කරුණු පැහැදිලි කරමු.

NULL අගයන් හසුරවීම

MySQL හි, NULL අගයන් “නොදන්නා අගයන්” ලෙස සැලකේ. එබැවින්, MAX ක්‍රියාවලිය භාවිතා කරන විට, NULL අගයන් නොසලකා හැරේ.

උදාහරණය: NULL ඇතුළත් දත්ත වලින් උපරිම අගය ලබා ගැනීම

SELECT MAX(salary) FROM employees;

දත්ත:

employee_idnamesalary
1Tanaka50000
2SatoNULL
3Suzuki60000

ප්‍රතිඵල:

MAX(salary)
60000

ප්‍රධාන කරුණු:

  • salary තීරුවේ NULL අගයන් තිබුණත්, ගණනය කිරීමේදී MAX ක්‍රියාවලිය ඒවා නොසලකා හරියයි.
  • NULL අගයන් ඔබේ දත්ත තර්කයට කෙසේ බලපාන්නේද යන්න ඔබ සැලකිලිමත් විය යුතුය.

බහු උපරිම අගයන් පවතින විට

MAX ක්‍රියාවලිය එකම උපරිම අගයක් ලබා දෙයි, නමුත් දත්ත කට්ටලයේ බහු රෙකෝඩ් එකම උපරිම අගය බෙදා ගත හැක. එවැනි අවස්ථාවල, සියලු ගැලපෙන රෙකෝඩ් ලබා ගැනීමට විමසුම සැකසිය යුතුය.

උදාහරණය: එකම උපරිම වැටුප් ඇති සේවකයන් ලබා ගැනීම

SELECT * 
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees);

දත්ත:

employee_idnamesalary
1Tanaka60000
2Sato60000
3Suzuki50000

ප්‍රතිඵල:

employee_idnamesalary
1Tanaka60000
2Sato60000

ප්‍රධාන කරුණ:

  • MAX එකක් පමණක් ප්‍රමාණවත් නොවේ නම්, සියලු ගැලපෙන රෙකෝඩ් ලබා ගැනීමට උප‑විමසුමක් භාවිතා කරන්න.

කාර්ය සාධන බලපෑම

සරල විමසුම් වල MAX ක්‍රියාවලිය කාර්යක්ෂමව ක්‍රියා කරයි. නමුත්, විශාල දත්ත කට්ටල හෝ සංකීර්ණ විමසුම් සමඟ වැඩ කරන විට කාර්ය සාධනය අඩු විය හැක.

කාර්ය සාධනය වැඩිදියුණු කිරීම සඳහා උපදෙස්

  1. ඉන්ඩෙක්සි භාවිතා කරන්න MAX ක්‍රියාවලිය භාවිතා කරන තීරුවට ඉන්ඩෙක්සියක් එක් කිරීම විමසුම් වේගය ගණනාවෙන් වැඩි කරයි.
    CREATE INDEX idx_salary ON employees(salary);
    
  1. අවශ්‍ය නොවන දත්ත පෙරහන් කරන්න WHERE වාක්‍යයක් භාවිතා කර ඉලක්ක පේළි සීමා කිරීමෙන් දත්ත කට්ටලය අඩු කරන්න.
    SELECT MAX(salary)
    FROM employees
    WHERE department_id = 1;
    
  1. බෙදී ගණනය කරන්න උපසෙට් වල උපරිම අගයන් ගණනය කර, පසු ඒවා එකතු කර අවසාන උපරිමය තීරණය කිරීම ගැන සිතන්න.

වෙනත් සැලකිලිමත් කරුණු

  1. දත්ත වර්ග වල බලපෑම MAX ක්‍රියාවලියේ හැසිරීම තීරුවේ දත්ත වර්ගය මත පදනම් වේ.
  • සංඛ්‍යාත්මක: සරල සංඛ්‍යාත්මක සැසඳීම.
  • පදය: අකාරානුකූල (lexicographical) අනුක්‍රමයෙන් සැසඳේ.
  • දිනය: නවතම (අවසන්) දිනය ලබා දෙයි. උදාහරණය:
    SELECT MAX(last_name) FROM employees;
    

මෙම අවස්ථාවේ, උපරිම අගය අකාරානුකූල පද අනුක්‍රමය මත තීරණය වේ.

  1. NULL නොවන අතුරුදන් වූ දත්ත දත්ත අසම්පූර්ණ හෝ වැරදි ආකාරයෙන් ආකෘතිකරණය කර ඇත්නම්, ගණනය ප්‍රතිඵලය අපේක්ෂා වලට නොගැලපේ. දත්ත පිරිසිදු කිරීම අවශ්‍ය විය හැක.

  2. වෙනත් එකතු කිරීමේ ක්‍රියාවලි සමඟ එකතු කිරීම MAX ක්‍රියාවලිය වෙනත් එකතු කිරීමේ ක්‍රියාවලි (උදා: SUM හෝ AVG) සමඟ එකතු කරන විට, ප්‍රතිඵලය නිවැරදිව විග්‍රහ කිරීමේදී සැලකිලිමත් වන්න.

7. FAQ: නිතර අසන ප්‍රශ්න

මෙම කොටස MySQL MAX ක්‍රියාවලිය පිළිබඳ සාමාන්‍ය ප්‍රශ්න සාරාංශ කර විස්තර කරයි. එය මූලික සහ උසස් මාතෘකා දෙකම ආවරණය කරයි.

Q1: MAX ක්‍රියාවලිය එකවර බහු තීරු වලට භාවිතා කළ හැකිද?

A1: නැත, MAX ක්‍රියාවලිය එක තීරුවක් මත ක්‍රියා කරයි. බහු තීරු වල උපරිම අගයන් ලබා ගැනීමට අවශ්‍ය නම්, එක් එක් තීරුවට වෙන්ව MAX ක්‍රියාවලිය යොදන්න.

උදාහරණය: බහු තීරුවලින් උපරිම අගයන් ලබා ගැනීම

SELECT MAX(salary) AS max_salary, MAX(bonus) AS max_bonus
FROM employees;

ප්‍රශ්නය 2: MAX ක්‍රියාවලිය ස්ට්‍රින් තීරුවකට යෙදූ විට කුමක් සිදුවේ?

A2: ස්ට්‍රින් තීරුවකට යෙදූ විට, MAX ක්‍රියාවලිය අකාරානුකූල (අකුරු නාමාවලිය) අනුපිළිවෙලේ අවසන් වන අගය ලබා දෙයි.

උදාහරණය: උපරිම ස්ට්‍රින් අගය ලබා ගැනීම

SELECT MAX(last_name) FROM employees;

ප්‍රධාන කරුණු:

  • අකාරානුකූල අනුපිළිවෙලේ, “Z” යනු “A” පසුපස එයි, සහ අංක සහ සංකේතදත් ඇගයීමට ලක් වේ.
  • විශේෂ අක්ෂර ඇතුළත් කරන්නේ නම්, ප්‍රතිඵලය ඔබේ අපේක්ෂිත අනුපිළිවෙලට නොගැලපිය හැක.

ප්‍රශ්නය 3: MAX ක්‍රියාවලිය සහ ORDER BY වාක්‍යය අතර වෙනස කුමක්ද?

A3: MAX ක්‍රියාවලිය සහ ORDER BY වාක්‍යය සමාන අරමුණු සේවය කරන බව පෙනේද, නමුත් ඒවා වෙනස් ලෙස ක්‍රියා කරයි.

  • MAX ක්‍රියාවලිය: නියමිත තීරුවේ උපරිම අගය සෘජුව ලබා ගනී.
  • ORDER BY වාක්‍යය: නියමිත තීරුව අනුව දත්ත සකස් කර, අවශ්‍ය පරිදි පළමු හෝ අවසන් අගය ලබා ගැනීමට ඉඩ සලසයි.

උදාහරණය: ORDER BY භාවිතයෙන් උපරිම අගය ලබා ගැනීම

SELECT * FROM employees
ORDER BY salary DESC
LIMIT 1;

ප්‍රධාන කරුණු:

  • MAX ක්‍රියාවලිය සාමාන්‍යයෙන් කාර්ය සාධනයේ වඩා කාර්යක්ෂම වේ.
  • ORDER BY වාක්‍යය උපරිම අගය අඩංගු රෙකෝඩ් සමඟ අතිරේක තොරතුරු අවශ්‍ය වන විට ප්‍රයෝජනවත් වේ.

ප්‍රශ්නය 4: NULL අගයන් ඇතුළත් වූ විට MAX ක්‍රියාවලිය නිවැරදිව ක්‍රියා කරන්නේද?

A4: ඔව්, MAX ක්‍රියාවලිය NULL අගයන් නොසලකා හරියි. එබැවින් NULL අගයන් උපරිම අග ගණනයට බලපාන්නේ නැත.

උදාහරණය: NULL අගයන් ඇතුළත් වූ විට හැසිරීම

SELECT MAX(salary) FROM employees;

දත්ත:

employee_idnamesalary
1Tanaka60000
2SatoNULL
3Suzuki50000

ප්‍රතිඵල:

MAX(salary)
60000

වැදගත් සටහන:
ඔබට NULL අගයන් සැකසීමේදී ඇතුළත් කිරීමට අවශ්‍ය නම්, IFNULL ක්‍රියාවලිය භාවිතා කර NULL අගය පෙරනිමි අගයක් සමඟ ප්‍රතිස්ථාපනය කරන්න.

SELECT MAX(IFNULL(salary, 0)) FROM employees;

ප්‍රශ්නය 5: MAX ක්‍රියාවලිය භාවිතා කරන විට කාර්ය සාධනය කෙසේ වැඩිදියුණු කළ හැකිද?

A5: පහත පියවරයන් සලකා බලන්න:

  1. ඉන්ඩෙක්ස් එකතු කිරීම: MAX ක්‍රියාවලිය භාවිතා කරන තීරුවට ඉන්ඩෙක්ස් එකතු කිරීම විමසුම් කාර්ය සාධනය ගණනාවක් වැඩිදියුණු කරයි.
    CREATE INDEX idx_salary ON employees(salary);
    
  1. ඉලක්ක දත්ත පෙරහන් කිරීම: WHERE වාක්‍යයක් භාවිතා කර සැකසිය යුතු පේළි ගණන අඩු කරන්න.
    SELECT MAX(salary) FROM employees WHERE department_id = 1;
    
  1. විමසුම් සුදුසුකම් කිරීම: අනිවාර්ය නොවන ගණනයන් ඉවත් කර, විමසුම් ව්‍යුහය සරලව තබන්න.

ප්‍රශ්නය 6: MAX ක්‍රියාවලිය GROUP BY වාක්‍යය සමඟ එකතු කරන විට කුමක් සිදුවේ?

A6: GROUP BY වාක්‍යය සමඟ MAX ක්‍රියාවලිය එකතු කරන විට, ඔබට සෑම කණ්ඩායමක් සඳහාම උපරිම අගය ලබා ගත හැක.

උදාහරණය: දෙපාර්තමේන්තුවකට අධික වැටුප් ලබා ගැනීම

SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id;

ප්‍රතිඵල:

department_idMAX(salary)
1120000
290000

ප්‍රශ්නය 7: බහු රෙකෝඩ් එකම උපරිම අගය බෙදා ගන්නේ නම්, සියල්ලම ලබා ගැනීමට කෙසේද?

A7: උපවිමසුමක් හෝ JOIN එකක් භාවිතා කර උපරිම අගය බෙදා ගන්නා සියලු රෙකෝඩ් ලබා ගන්න.

උදාහරණය: උපරිම අගය ඇති සියලු රෙකෝඩ් ලබා ගැනීම

SELECT *
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees);

ප්‍රශ්නය 8: MAX ක්‍රියාවලිය කවුළුව ක්‍රියාවලි (window functions) සමඟ භාවිතා කළ හැදියිද?

A8: ඔව්, MySQL 8.0 සහ ඊට පසු අනුව, ඔබට MAX ක්‍රියාවලිය කවුළුව ක්‍රියාවලි සමඟ එකතු කර, වඩා ස flexibil යුක්ත විමසුම් සකස් කළ හැක.

උදාහරණය: දෙපාර්තමේන්තුවකට අධික වැටුප් ඇති සේවකයන් ලබා ගැනීම

SELECT employee_id, name, salary, department_id
FROM (
    SELECT *,
           RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rnk
    FROM employees
) ranked
WHERE rnk = 1;

8. සාරාංශය

MySQL MAX ක්‍රියාවලිය දත්ත ගබඩා මෙහෙයුම් සහ දත්ත විශ්ලේෂණ සඳහා ශක්තිමත් මෙවලමකි. මෙම ලිපියේ, අපි MAX ක්‍රියාවලියේ මූලික භාවිතය සිට කොන්දේසි විමසුම්, කණ්ඩායම් කිරීම, උපරිම අගයන් සමඟ සම්පූර්ණ රෙකෝඩ් ලබා ගැනීම, සහ කාර්ය සාධන සුදුසුකම් කිරීම දක්වා සවිස්තරාත්මකව ආවරණය කර ඇත.

ප්‍රධාන සාරාංශය

  1. MAX ක්‍රියාකාරකමේ මූලික භාවිතය MAX ක්‍රියාකාරකම යොදා ගන්නේ නියමිත තීරුවක උපරිම අගය ලබා ගැනීමටයි. එය සංඛ්‍යා, අක්ෂර මාලා, දිනයන් ඇතුළත් විවිධ දත්ත වර්ග සහය දක්වයි.
  2. කොන්දේසිමය උපරිම ලබා ගැනීම WHERE කොටස භාවිතා කිරීමෙන්, ඔබට විශේෂ කොන්දේසි වලට ගැළපෙන උපරිම අගයන් ලබා ගත හැක. මෙය ව්‍යාපෘති-අධාරිත හෝ දෙපාර්තමේන්තු-අධාරිත විශ්ලේෂණ සඳහා ප්‍රයෝජනවත් වේ.
  3. කණ්ඩායමකට උපරිම අගයන් ලබා ගැනීම අපි GROUP BY කොටස භාවිතා කර කණ්ඩායමකට උපරිම අගයන් ලබා ගැනීමට, උදාහරණයක් ලෙස දෙපාර්තමේන්තුවකට වැටුප් හෝ මාසික විකුණුම් වැනි, කෙසේදැයි පැහැදිලි කළෙමු.
  4. උපරිම අගය සමඟ සම්පූර්ණ රෙකෝඩ් ලබා ගැනීම ඔබ උප-විමසුම්, JOIN, සහ වින්ඩෝ ක්‍රියාකාරකම් භාවිතා කර උපරිම අගයන් අඩංගු සම්පූර්ණ රෙකෝඩ් කාර්යක්ෂමව ලබා ගැනීමට ඉගෙන ගත්තෙහි.
  5. MAX භාවිතා කිරීමේදී වැදගත් සැලකිලි NULL සැකසීම, බහු උපරිම අගයන්, සහ කාර්ය සාධන බලපෑම ගැන සැලකිල්ලට ගැනීම වැදගත් වේ.
  6. FAQ අපි සාමාන්‍ය ප්‍රශ්න, උදාහරණයක් ලෙස බහු තීරු සමඟ MAX භාවිතා කිරීම සහ කාර්ය සාධන උපරිම කිරීම සඳහා උපදෙස්, පිළිතුරු දුන්නෙමු.

අවසාන අදහස්

MAX ක්‍රියාකාරකම නිසි ලෙස භාවිතා කිරීමෙන්, දත්ත විශ්ලේෂණය සහ වාර්තාකරණය බොහෝ වශයෙන් කාර්යක්ෂම වේ. වැඩි උසස් විමසුම් සෑදීමට SQL අභ්‍යාස කරගෙන යන්න.

MySQL භාවිතයෙන් දත්ත සැකසීම සහ විශ්ලේෂණය පිළිබඳ ඔබේ අවබෝධය ගැඹුරු කර ගැනීමට මෙම ලිපිය උපකාරී වේ යැයි අපි බලාපොරොත්තු වෙමු.