1. HAVING වාක්යය කුමක්ද?
HAVING වාක්යය යනු දත්ත කණ්ඩායම් කරගත් පසු ඒ ඒ කණ්ඩායම් වල සංඛ්යාත ප්රතිඵලවලට කොන්දේසි යෙදීමට භාවිතා කරන SQL වාක්ය රීතියකි. මෙය සාමාන්යයෙන් GROUP BY වාක්යය සමඟ එක්ව භාවිතා කරමින්, සංඛ්යාත කිරීමෙන් පසු දත්ත පෙරහන් කිරීමේ කාර්යය ඉටු කරයි. HAVING වාක්යය භාවිතා කිරීමෙන්, ඔබට විශේෂිත මාර්ගෝපදේශයන්ට ගැළපෙන කණ්ඩායම් පමණක් ලබාගත හැකිය.
උදාහරණයක් ලෙස, සමස්ත විකුණුම් රුපියල් ප්රමාණයක් ඉක්මවන ගනුදෙනුකරුවන් හෝ සාමාන්ය ලකුණු නියමිත සීමාව ඉක්මවන කණ්ඩායම් ලබාගැනීමට HAVING වාක්යය භාවිතා කරයි. WHERE වාක්යය සංඛ්යාත කිරීමට පෙර තනි පේළි වලට කොන්දේසි යෙදුවත්, HAVING වාක්යය සංඛ්යාත කිරීමෙන් පසු ප්රතිඵලවලට කොන්දේසි යෙදේ.
HAVING වාක්යය භාවිතා කිරීමේ උදාහරණය
උදාහරණයක් ලෙස, පහත ප්රශ්නය 10,000 කට වැඩි සමස්ත විකුණුම් ඇති ගනුදෙනුකරුවන් ලබාගනී.
SELECT customer_id, SUM(sales) AS total_sales
FROM sales_table
GROUP BY customer_id
HAVING SUM(sales) > 10000;
මෙම ප්රශ්නය SUM ක්රියාවලිය භාවිතා කර එක් එක් ගනුදෙනුකරුගේ සමස්ත විකුණුම් ගණනය කර, සමස්තය 10,000 කට වැඩි ගනුදෙනුකරුවන් පමණක් ලබාගනී.
2. HAVING වාක්යයේ මූලික රීතිය සහ භාවිතය
HAVING වාක්යයේ මූලික රීතිය පහත පරිදි වේ:
SELECT column_name, aggregate_function(column_name)
FROM table_name
GROUP BY column_name
HAVING condition;
මෙම රීතිය GROUP BY වාක්යය භාවිතා කර දත්ත කණ්ඩායම් කර, HAVING වාක්යයේ කොන්දේසි නියම කර සංඛ්යාත ප්රතිඵල පෙරහන් කරයි. උදාහරණයක් ලෙස, පහත ප්රශ්නය orders වගුවෙන් පණිවුඩ 5 කට වැඩි හෝ සමාන ගනුදෙනුකරුවන් ලබාගනී.
SELECT customer_id, COUNT(order_id) AS order_count
FROM orders_table
GROUP BY customer_id
HAVING COUNT(order_id) >= 5;
මෙහි COUNT ක්රියාවලිය භාවිතා කර එක් එක් ගනුදෙනුකරුගේ ඇණවුම් ගණන ගණනය කර, 5 කට වැඩි හෝ සමාන ඇණවුම් ඇති ගනුදෙනුකරුවන් පමණක් පෙරහන් කරයි.
3. HAVING වාක්යයේ ප්රායෝගික යෙදුම්
HAVING වාක්යය සංඛ්යාත ක්රියාවලීන් සමඟ එක්වූ විට උසස් දත්ත විශ්ලේෂණ සඳහා ශක්තිමත් මෙවලමක් වේ. පහත දැක්වෙන්නේ එය යෙදිය හැකි කිහිපයක් වූ ප්රායෝගික උදාහරණයන්ය.
උදාහරණ 1: සමස්ත විකුණුම් අනුව පෙරහන් කිරීම
සමස්ත විකුණුම් 10,000 කට වැඩි වන නිෂ්පාදන ලබාගැනීමට, පහත පරිදි SUM ක්රියාවලිය භාවිතා කරන්න.
SELECT product_id, SUM(sales) AS total_sales
FROM products_table
GROUP BY product_id
HAVING SUM(sales) > 10000;
මෙම ප්රශ්නය එක් එක් නිෂ්පාදනයේ සමස්ත විකුණුම් ගණනය කර, සමස්තය 10,000 කට වැඩි නිෂ්පාදන පමණක් ලබාගනී.
උදාහරණ 2: ඇණවුම් ගණන අනුව පෙරහන් කිරීම
නියමිත ගනුදෙනුකරු 10 කට වැඩි ඇණවුම් කර තිබේ නම්, එම ගනුදෙනුකරු පහත පරිදි ලබාගන්න.
SELECT customer_id, COUNT(order_id) AS order_count
FROM orders_table
GROUP BY customer_id
HAVING COUNT(order_id) > 10;
මෙම ප්රශ්නය එක් එක් ගනුදෙනුකරුගේ ඇණවුම් ගණන ගණනය කර, 10 කට වැඩි ඇණවුම් ඇති ගනුදෙනුකරුවන් පමණක් ලබාගනී.
4. HAVING සහ WHERE අතර වෙනස
HAVING වාක්යය සහ WHERE වාක්යය දෙකම දත්ත පෙරහන් කිරීම සඳහා භාවිතා කරන නමුත්, ඒවා යෙදෙන වේලාවේ වෙනසක් ඇත.
යෙදීමේ වේලාවේ වෙනස
- WHERE වාක්යය : කණ්ඩායම් කිරීමකට පෙර යෙදෙයි, තනි පේළි පෙරහන් කරයි.
- HAVING වාක්යය : කණ්ඩායම් කිරීමකට පසු යෙදෙයි, සංඛ්යාත ප්රතිඵල පෙරහන් කරයි.
උදාහරණයක් ලෙස, WHERE සහ HAVING වාක්ය දෙකම එකට භාවිතා කරන ප්රශ්නයක, WHERE වාක්යය පළමුව විකුණුම් 1,000 කට වැඩි පේළි පෙරහන් කර, පසුදා HAVING වාක්යය සමස්ත විකුණුම් 5,000 කට වැඩි ප්රතිඵල ලබාගනී.
SELECT customer_id, SUM(sales) AS total_sales
FROM sales_table
WHERE sales >= 1000
GROUP BY customer_id
HAVING SUM(sales) > 5000;
මෙම ප්රශ්නයේ GROUP BY සහ HAVING යෙදෙන්නේ WHERE වාක්යය විසින් පෙරහන් කරන දත්ත මත පදනම්ව, සමස්ත විකුණුම් 5,000 කට වැඩි ගනුදෙනුකරුවන් පමණක් ලබාගනී. 
5. HAVING වාක්යය භාවිතා කිරීමේ වැදගත් සටහන්
සංඛ්යාත ක්රියාවලීන් සමඟම භාවිත කළ යුතුය
Since the HAVING clause filters aggregated results, it must be used together with aggregate functions such as SUM or COUNT. For conditions that apply to individual rows, it is appropriate to use the WHERE clause.
HAVING වාක්යය එකතු කළ ප්රතිඵල පිරික්සන බැවින්, එය SUM හෝ COUNT වැනි එකතු කිරීමේ ක්රියාකාරකම් සමඟ එකට භාවිතා කළ යුතුය. තනි පේළි වලට අදාළ වන කොන්දේසි සඳහා, WHERE වාක්යය භාවිතා කිරීම සුදුසුය.
Using Aliases
අලියාස් භාවිතය
In the HAVING clause, you can write conditions using aliases specified with AS. For example, you can assign an alias to total sales and use it in the condition as shown below.
HAVING වාක්යයේ, AS සමඟ නියමිත අලියාස් භාවිතා කර කොන්දේසි ලිවිය හැක. උදාහරණයක් ලෙස, මුළු විකුණුම් සඳහා අලියාස් එකක් නියම කර එය පහත පෙන්වා ඇති පරිදි කොන්දේසියේ භාවිතා කළ හැක.
SELECT customer_id, SUM(sales) AS total_sales
FROM sales_table
GROUP BY customer_id
HAVING total_sales > 10000;
This query extracts customers whose total sales exceed 10,000.
මෙම විමසුම මුළු විකුණුම් 10,000 කට වැඩි වන ගනුදෙනුකරුවන් ලබා ගනී.
6. Summary: How to Effectively Use the HAVING Clause
6. සාරාංශය: HAVING වාක්යය කාර්යක්ෂමව භාවිතා කිරීමේ ක්රම
The HAVING clause is a powerful tool that allows flexible filtering of aggregated data by applying conditions to summary results. In particular, when analyzing aggregated data such as sales totals or order counts, using the HAVING clause enables efficient data analysis. By understanding the difference between the HAVING clause and the WHERE clause and using them appropriately together, you can maximize the flexibility of your SQL queries.
HAVING වාක්යය ශක්තිමත් මෙවලමක් වන අතර, සාරාංශ ප්රතිඵල වලට කොන්දේසි යොදමින් එකතු කළ දත්ත සවිස්තරාත්මකව පිරික්සීමට ඉඩ සලසයි. විශේෂයෙන්, විකුණුම් මුළු එකතුව හෝ ඇණවුම් ගණන වැනි එකතු කළ දත්ත විශ්ලේෂණය කරන විට, HAVING වාක්යය භාවිතා කිරීම කාර්යක්ෂම දත්ත විශ්ලේෂණය සලසයි. HAVING වාක්යය සහ WHERE වාක්යය අතර වෙනස තේරුම්ගෙන, ඒවා නිසි ලෙස එකට භාවිතා කිරීමෙන්, ඔබේ SQL විමසුම් වල ලවච්චිතාව වැඩිම තරම් උපරිම කරගත හැක.


