না।
তাদের সহাবস্থান করতে হবে না, যেমন ওরাকলে নিম্নলিখিত কোয়েরিটি কাজ করে তা প্রমাণ করে:
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);