कथन 'समूह प्रसंस्करण द्वारा' कहलाता है का उपयोग कर रहा है। चरण चलने से पहले, यह आवश्यक है कि डेटा को btn wtn resp_ji
द्वारा क्रमबद्ध किया जाए .
first.resp_ji
टुकड़ा यह देखने के लिए जाँच कर रहा है कि क्या यह पहली बार वर्तमान btn/wtn संयोजन के भीतर resp_ji का वर्तमान मान देखा गया है। इसी तरह last.resp_ji
टुकड़ा जाँच कर रहा है कि क्या यह अंतिम बार है कि उसे resp_ji
का वर्तमान मान दिखाई देगा वर्तमान बीटीएन/डब्ल्यूटीएन संयोजन के भीतर।
इन सबको मिलाकर कथन:
if not (first.resp_ji and last.resp_ji);
कह रहा है, यदि btn/wtn के वर्तमान संयोजन के लिए resp_ji का वर्तमान मान कई बार होता है तो रिकॉर्ड रखें, अन्यथा रिकॉर्ड को त्याग दें। if
. का व्यवहार बयान जब इस तरह इस्तेमाल किया जाता है तो रिकॉर्ड को परोक्ष रूप से रखता/छोड़ देता है।
SQL में समकक्ष करने के लिए, आप कुछ ऐसा कर सकते हैं:
- छोड़ने के लिए सभी रिकॉर्ड खोजें।
- उन अभिलेखों को मूल डेटासेट से हटा दें।
तो...
create table rows_to_discard as
select btn, wtn, resp_ji, count(*) as freq
from mytable
group by btn, wtn, resp_ji
having count(*) = 1
create table want as
select a.*
from mytable a
left join rows_to_discard b on b.btn = a.btn
and b.wtn = a.wtn
and b.resp_ji = a.resp_ji
where b.btn is null
संपादित करें :मुझे यह उल्लेख करना चाहिए कि कोई साधारण SQL समकक्ष नहीं है। यह सबक्वायरीज़ में पंक्तियों को क्रमांकित करके और फिर उसके ऊपर तर्क बनाकर संभव हो सकता है, लेकिन यह उघ-गीत होगा। यह उपयोग किए जा रहे SQL के विशिष्ट स्वाद पर भी निर्भर हो सकता है।