SQL ফাংশন ডেটাবেস পরিচালনার জন্য অত্যন্ত গুরুত্বপূর্ণ। এগুলি ডেটা প্রসেসিং সহজ করে, জটিল গণনা সম্পন্ন করে এবং বিভিন্ন ধরণের অপারেশন চালাতে সাহায্য করে। SQL ফাংশন সাধারণত বেসিক ফাংশন এবং এডভান্সড ফাংশন-এ বিভক্ত।
বেসিক SQL Functions
১. অ্যাগ্রিগেট ফাংশন (Aggregate Functions)
অ্যাগ্রিগেট ফাংশন সাধারণত একাধিক রেকর্ড থেকে ডেটা সারসংক্ষেপ করতে ব্যবহৃত হয়।
SUM(): নির্দিষ্ট কলামের মান যোগ করে।
SELECT SUM(salary) FROM employees;AVG(): নির্দিষ্ট কলামের গড় মান প্রদান করে।
SELECT AVG(salary) FROM employees;COUNT(): মোট রেকর্ড বা নির্দিষ্ট কলামে নাল বাদে সংখ্যা গণনা করে।
SELECT COUNT(*) FROM employees;MAX(): নির্দিষ্ট কলামে সর্বোচ্চ মান প্রদান করে।
SELECT MAX(salary) FROM employees;MIN(): নির্দিষ্ট কলামে সর্বনিম্ন মান প্রদান করে।
SELECT MIN(salary) FROM employees;
২. স্ট্রিং ফাংশন (String Functions)
স্ট্রিং ডেটার উপর বিভিন্ন অপারেশন চালাতে ব্যবহৃত হয়।
UPPER(): স্ট্রিং ডেটাকে বড় হাতের অক্ষরে রূপান্তর করে।
SELECT UPPER(name) FROM employees;LOWER(): স্ট্রিং ডেটাকে ছোট হাতের অক্ষরে রূপান্তর করে।
SELECT LOWER(name) FROM employees;CONCAT(): দুটি বা তার বেশি স্ট্রিং যোগ করে।
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;LENGTH(): স্ট্রিং-এর দৈর্ঘ্য প্রদান করে।
SELECT LENGTH(name) FROM employees;
৩. ডেট ফাংশন (Date Functions)
ডেট এবং সময় সম্পর্কিত ডেটার উপর কাজ করে।
NOW(): বর্তমান তারিখ এবং সময় প্রদান করে।
SELECT NOW();CURDATE(): বর্তমান তারিখ প্রদান করে।
SELECT CURDATE();DATEDIFF(): দুটি তারিখের মধ্যে পার্থক্য প্রদান করে।
SELECT DATEDIFF('2024-12-31', '2024-01-01') AS days_diff;YEAR(), MONTH(), DAY(): নির্দিষ্ট তারিখ থেকে বছর, মাস বা দিনের মান প্রদান করে।
SELECT YEAR(hire_date) FROM employees;
এডভান্সড SQL Functions
১. উইন্ডো ফাংশন (Window Functions)
উইন্ডো ফাংশন নির্দিষ্ট রেকর্ড গ্রুপের উপর কাজ করে এবং প্রতিটি রেকর্ডের জন্য ফলাফল প্রদান করে।
ROW_NUMBER(): প্রতিটি রেকর্ডের জন্য অনন্য নম্বর প্রদান করে।
SELECT ROW_NUMBER() OVER (ORDER BY salary DESC) AS rank, name, salary FROM employees;RANK(): রেকর্ডের র্যাঙ্ক প্রদান করে (একই মানের জন্য একই র্যাঙ্ক)।
SELECT RANK() OVER (ORDER BY salary DESC) AS rank, name FROM employees;NTILE(): ডেটা নির্দিষ্ট গ্রুপে ভাগ করে।
SELECT NTILE(4) OVER (ORDER BY salary) AS quartile, name FROM employees;
২. JSON ফাংশন
JSON ডেটার সাথে কাজ করার জন্য ফাংশন।
JSON_EXTRACT(): JSON ডেটা থেকে নির্দিষ্ট মান বের করে।
SELECT JSON_EXTRACT(data, '$.key') FROM json_table;JSON_ARRAY(): একটি JSON অ্যারে তৈরি করে।
SELECT JSON_ARRAY('value1', 'value2');
৩. রিকার্সিভ ফাংশন (Recursive Functions)
রিকার্সিভ CTE (Common Table Expressions) ব্যবহার করে জটিল হায়ারার্কি বা রিকার্সিভ ডেটা হ্যান্ডল করা যায়।
WITH RECURSIVE hierarchy AS (
SELECT employee_id, manager_id, name
FROM employees
WHERE manager_id IS NULL
UNION ALL
SELECT e.employee_id, e.manager_id, e.name
FROM employees e
INNER JOIN hierarchy h ON e.manager_id = h.employee_id
)
SELECT * FROM hierarchy;
৪. সেট অপারেশন ফাংশন (Set Operations)
একাধিক কুয়েরি থেকে ডেটা একত্রিত করার জন্য ব্যবহৃত হয়।
UNION: দুটি বা তার বেশি কুয়েরির ডেটা একত্রিত করে।
SELECT name FROM employees UNION SELECT name FROM contractors;INTERSECT: দুটি কুয়েরির সাধারণ ডেটা প্রদান করে।
SELECT name FROM employees INTERSECT SELECT name FROM contractors;
৫. জটিল অ্যাগ্রিগেশন ফাংশন
জটিল ডেটা বিশ্লেষণের জন্য ব্যবহৃত হয়।
GROUP_CONCAT(): নির্দিষ্ট গ্রুপের মানগুলো একটি স্ট্রিংয়ে পরিণত করে।
SELECT department, GROUP_CONCAT(name) AS employees FROM employees GROUP BY department;PERCENT_RANK(): একটি মানের শতাংশ ভিত্তিক র্যাঙ্ক প্রদান করে।
SELECT PERCENT_RANK() OVER (ORDER BY salary) AS percent_rank, name FROM employees;
সারাংশ
SQL-এর বেসিক ফাংশনগুলো সাধারণ ডেটা বিশ্লেষণ এবং ম্যানিপুলেশনের জন্য যথেষ্ট, যেখানে এডভান্সড ফাংশন ডেটার জটিল বিশ্লেষণ এবং রিকার্সিভ অপারেশন পরিচালনার জন্য ব্যবহৃত হয়। HSQLDB-তে এই ফাংশনগুলোর কার্যকর ব্যবহার ডেটাবেস পারফরম্যান্স এবং ডেটা বিশ্লেষণের দক্ষতা বাড়ায়।
Read more