नहीं।
उन्हें सह-अस्तित्व में नहीं होना चाहिए, जैसा कि इस तथ्य से साबित होता है कि ओरेकल में निम्नलिखित क्वेरी काम करती है:
select * from dual having 1 = 1;
इसी तरह, PostgreSQL में निम्नलिखित क्वेरी काम करती है:
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);