না।
তাদের সহাবস্থান করতে হবে না, যেমন ওরাকলে নিম্নলিখিত কোয়েরিটি কাজ করে তা প্রমাণ করে:
select * from dual having 1 = 1;
একইভাবে, পোস্টগ্রাইএসকিউএলে নিম্নলিখিত কোয়েরিটি কাজ করে:
select 1 having 1 = 1;
সুতরাং প্রয়োজন having
হয় না । group by
হচ্ছে না প্রয়োগ পর অ্যাগ্রিগেশন ফেজ এবং যদি আপনি সমষ্টিগত ফলাফল ফিল্টার করতে চান ব্যবহার করা আবশ্যক। সুতরাং বিপরীতটি সত্য নয়, এবং নিম্নলিখিতগুলি কাজ করবে না:
select a, count(*) as c
from mytable
group by a
where c > 1;
নিম্নলিখিত হিসাবে আপনাকে এই ক্ষেত্রে প্রতিস্থাপন where
করতে হবে having
:
select a, count(*) as c
from mytable
group by a
having c > 1;
NB নিম্নলিখিত কোয়েরি ফর্মটিও কাজ করবে:
select *
from (
select a, count(*) as c
from mytable
group by a
)
where c > 1;
আপনি দেখতে পাচ্ছেন যে having
ব্যবহারটি হ'ল এই শেষ ক্যোয়ারীর একটি সংক্ষিপ্ত সংস্করণ।
সংক্ষেপে বলা যায়, having
প্রয়োগ করা হয় পরgroup by
ফেজ যেহেতু where
প্রয়োগ করা হয় আগেgroup by
ফেজ।
SELECT MIN(a) AS mina, MAX(a) As maxa FROM mytable HAVING MIN(a) < MAX(a);