अनुकरण EVERY()
CASE
के साथ और SUM()
वास्तव में, यह लेख बताता है कि कैसे EVERY()
CASE
. के माध्यम से अनुकरण किया जा सकता है और SUM()
. निम्नलिखित दो कथन समतुल्य हैं:
SELECT EVERY(id < 10)
FROM book
SELECT CASE SUM(CASE WHEN id < 10 THEN 0 ELSE 1 END)
WHEN 0 THEN 1
ELSE 0
END
FROM book;
EVERY()
. के लिए भी यही सच है विंडो फ़ंक्शन:
SELECT
book.*,
EVERY(title LIKE '%a') OVER (PARTITION BY author_id)
FROM book
SELECT
book.*,
CASE SUM(CASE WHEN title LIKE '%a' THEN 0 ELSE 1 END)
OVER(PARTITION BY author_id)
WHEN 0 THEN 1
ELSE 0
END
FROM book;
एसक्यूएल मानक
SQL:2008
मानक EVERY
का उल्लेख करता है कुल कार्य:
10.9 <aggregate function>
[...]
<aggregate function> ::=
COUNT <left paren> <asterisk> <right paren> [ <filter clause> ]
| <general set function> [ <filter clause> ]
| <binary set function> [ <filter clause> ]
| <ordered set function> [ <filter clause> ]
<general set function> ::=
<set function type> <left paren> [ <set quantifier> ]
<value expression> <right paren>
<set function type> ::=
<computational operation>
<computational operation> ::=
AVG
| MAX
| MIN
| SUM
| EVERY
| [...]
लेकिन "उन्नत" SQL मानक सुविधाओं को अक्सर डेटाबेस द्वारा लागू नहीं किया जाता है। Oracle 11g उदाहरण के लिए, इसका समर्थन नहीं करता, न ही SQL Server 2012 .
HSQLDB
के साथ हालाँकि, आप अधिक भाग्यशाली हो सकते हैं। HSQLDB 2.x बहुत ही मानकों के अनुरूप है, साथ ही MySQL को BIT_AND()
पता है
एग्रीगेट फ़ंक्शन, जो EVERY()
. के लिए एक गैर-मानक उपनाम है , पोस्टग्रेज़ द्वारा भी समर्थित है।
ध्यान दें, कुछ डेटाबेस उपयोगकर्ता द्वारा परिभाषित समग्र कार्यों को लिखने की अनुमति देते हैं, इसलिए आप EVERY()
को भी लागू कर सकते हैं। स्वयं।