Database
 sql >> डेटाबेस >  >> RDS >> Database

एसक्यूएल में पंक्ति पैटर्न पहचान

ISO/IEC 9075:2016 मानक, या SQL:2016 संक्षेप में, SQL में Row Pattern Recognition (RPR) नामक एक गहन अवधारणा के लिए समर्थन का परिचय देता है। मैंने टी-एसक्यूएल में आरपीआर के लिए समर्थन जोड़कर एसक्यूएल सर्वर को बेहतर बनाने के लिए एक सुझाव पोस्ट किया था, लेकिन मुझे उस जगह में काफी सीमित था जहां मुझे फीडबैक देना था। इस लेख का उद्देश्य प्रस्ताव के बारे में अधिक जानकारी प्रदान करना है, और उम्मीद है कि आप इसके महत्व के बारे में आश्वस्त होंगे और अपना वोट जोड़ेंगे।

पृष्ठभूमि

एक स्ट्रिंग में पैटर्न की पहचान करने के लिए नियमित अभिव्यक्तियों का उपयोग करने के समान, आरपीआर के साथ आप पंक्तियों के अनुक्रम में पैटर्न की पहचान करने के लिए नियमित अभिव्यक्तियों का उपयोग करते हैं। प्रत्येक पैटर्न मिलान के लिए, आप या तो समूहीकरण की तरह एक सारांश पंक्ति लौटा सकते हैं, या विस्तृत पंक्तियाँ, मिलान के बाद के परिकलित उपायों के साथ। आरपीआर में असीमित व्यावहारिक अनुप्रयोग हैं, जिसमें स्टॉक मार्केट गतिविधि में पैटर्न की पहचान करना (ट्रेडिंग मूल्य के साथ वैध पैटर्न और संभावित अवैध या संदिग्ध पैटर्न दोनों), समय श्रृंखला को संभालना, धोखाधड़ी का पता लगाना, सामग्री प्रबंधन, शिपिंग एप्लिकेशन, डीएनए अनुक्रमण, अंतराल और द्वीप, शीर्ष शामिल हैं। एन प्रति समूह, और कई अन्य।

मेरे लिए, आरपीआर उच्च स्तर के परिष्कार और विस्तारित उपयोगिता के साथ, विंडो फ़ंक्शंस के विकास में अगला कदम है। अगर आपको लगता है कि विंडो फंक्शन्स गहन और उपयोगी हैं, तो आरपीआर वास्तव में आपके नूडल को सेंकने वाला है। विंडो फ़ंक्शंस के समान, RPR पार्टीशन और ऑर्डरिंग का समर्थन करता है। आप आमतौर पर संकेतित क्रम के आधार पर स्वतंत्र रूप से प्रत्येक विभाजन के भीतर पैटर्न मिलान की तलाश करेंगे। विंडो फ़ंक्शंस के समान, RPR खुद को अच्छे अनुकूलन के लिए उधार देता है, डेटा को सॉर्ट करने से बचने के लिए इंडेक्स ऑर्डरिंग पर भरोसा करने की क्षमता के साथ।

आप 90-पृष्ठ की तकनीकी रिपोर्ट ISO/IEC TR 19075-5 (मुफ्त में उपलब्ध) में सचित्र उदाहरणों सहित, RPR का कवरेज पा सकते हैं।

आप इसे दस्तावेज़ ISO/IEC 9075-2:2016, सूचना प्रौद्योगिकी — डेटाबेस भाषाएँ — SQL — भाग 2:फ़ाउंडेशन (SQL/Foundation) (खरीद के लिए उपलब्ध) के भाग के रूप में भी पा सकते हैं।

SQL:2016 मानक दो मुख्य RPR-संबंधित सुविधाएँ प्रदान करता है:

<उल प्रकार =वर्ग>
  • सुविधा R010, "पंक्ति पैटर्न पहचान:खंड से"
  • सुविधा R020, "पंक्ति पैटर्न पहचान:WINDOW खंड"
  • मानक में फीचर R030, "पंक्ति पैटर्न पहचान:पूर्ण समग्र समर्थन" का भी उल्लेख है, जिसके बिना कुल कार्यों को DISTINCT या <फ़िल्टर क्लॉज> निर्दिष्ट करने की अनुमति नहीं है।

    अब तक, उस कार्यान्वित फीचर R010 के बारे में मुझे पता है कि एकमात्र प्लेटफॉर्म Oracle है। मैं अभी तक R020 को लागू करने वाले किसी भी प्लेटफ़ॉर्म के बारे में नहीं जानता।

    सुविधा R010, "पंक्ति पैटर्न पहचान:खंड से"

    फ़ीचर R010 MATCH_RECOGNIZE नामक एक क्लॉज/टेबल ऑपरेटर को परिभाषित करता है, जिसका उपयोग आप FROM क्लॉज में करते हैं। इनपुट एक टेबल या टेबल एक्सप्रेशन है, और आउटपुट एक वर्चुअल टेबल है। संदर्भ अन्य टेबल ऑपरेटरों जैसे जॉइन, एप्लाई, पिवोट और यूएनपीवीओटी के समान है। इस सुविधा का उपयोग करने वाली क्वेरी का सिंटैक्स यहां दिया गया है:

    चुनें एक पंक्ति प्रति मैच | सभी पंक्तियाँ प्रति मैच ] [मैच के बाद <विकल्प पर जाएं> पैटर्न ( <पंक्ति पैटर्न> ) [ SUBSET <उपसेट सूची> ] परिभाषित करें <परिभाषा सूची> ) AS <तालिका उपनाम>;

    उपरोक्त तकनीकी रिपोर्ट से अनुकूलित एक उदाहरण के रूप में, मान लीजिए कि आपको एक टेबल dbo.Ticker दिया गया है, जिसमें कॉलम सिंबल, ट्रेडडेट और कीमत है। तालिका बनाने के लिए निम्न कोड का उपयोग करें, इसे कुछ नमूना डेटा के साथ भरें, और इसे क्वेरी करें:

    नोकाउंट चालू करें; टेम्पर्ड का उपयोग करें; ड्रॉप टेबल यदि मौजूद है dbo.Ticker; क्रिएट टेबल dbo.Ticker (प्रतीक VARCHAR(10) NOT NULL, ट्रेडडेट डेट नॉट न्यूल, प्राइस NUMERIC(12, 2) NOT NULL, CONSTRAINT PK_Ticker PRIMARY KEY (प्रतीक, ट्रेडडेट)); dbo.Ticker (प्रतीक, ट्रेडडेट) में सम्मिलित करें , मूल्य) VALUES ('STOCK1', '20190212', 150.00), ('STOCK1', '20190213', 151.00), ('STOCK1', '20190214', 148.00), ('STOCK1', '20190215', 146.00 ), ('STOCK1', '20190218', 142.00), ('STOCK1', '20190219', 144.00), ('STOCK1', '20190220', 152.00), ('STOCK1', '20190221', 152.00), ('STOCK1', '20190222', 153.00), ('STOCK1', '20190225', 154.00), ('STOCK1', '20190226', 154.00), ('STOCK1', '20190227', 154.00), (' STOCK1', '20190228', 153.00), ('STOCK1', '20190301', 145.00), ('STOCK1', '20190304', 140.00), ('STOCK1', '20190305', 142.00), ('STOCK1') , '20190306', 143.00), ('STOCK1', '20190307', 142.00), ('STOCK1', '20190308', 140.00), ('STOCK1', '20190311', 138.00), ('STOCK2', ' 20190212', 330.00), ('स्टॉक2', '20190213', 329.00), ('स्टॉक2', '20190214', 329.00), ('स्टॉक2', '20190215', 326.00), ('स्टॉक2', '20190218', 325.00), ('स्टॉक2', '20190219', 326.00), ('स्टॉक2', '20190220', 328.00) , ('STOCK2', '20190221', 326.00), ('STOCK2', '20190222', 320.00), ('STOCK2', '20190225', 317.00), ('STOCK2', '20190226', 319.00), ( 'STOCK2', '20190227', 325.00), ('STOCK2', '20190228', 322.00), ('STOCK2', '20190301', 324.00), ('STOCK2', '20190304', 321.00), ('STOCK2') ', '20190305', 319.00), ('स्टॉक2', '20190306', 322.00), ('स्टॉक2', '20190307', 326.00), ('स्टॉक2', '20190308', 326.00), ('स्टॉक2', '20190311', 324.00); dbo.Ticker से सिंबल, ट्रेडडेट, कीमत चुनें;

    यह कोड निम्न आउटपुट उत्पन्न करता है:

    प्रतीक व्यापार दिनांक मूल्य---------------------STOCK1 2019-02-12 150.00STOCK1 2019-02-13 151.00STOCK1 2019-02-14 148.00STOCK1 2019-02-15 146.00STOCK1 2019-02-18 142.00STOCK1 2019-02-19 144.00STOCK1 2019-02-20 152.00STOCK1 2019-02-21 152.00STOCK1 2019-02-22 153.00STOCK1 2019-02-25 154.00STOCK1 2019 -02-26 154.00STOCK1 2019-02-27 154.00STOCK1 2019-02-28 153.00STOCK1 2019-03-01 145.00STOCK1 2019-03-04 140.00STOCK1 2019-03-05 142.00STOCK1 2019-03-06 143.00STOCK1 2019- 03-07 142.00STOCK1 2019-03-08 140.00STOCK1 2019-03-11 138.00STOCK2 2019-02-12 330.00STOCK2 2019-02-13 329.00STOCK2 2019-02-14 329.00STOCK2 2019-02-15 326.00STOCK2 2019-02 -18 325.00STOCK2 2019-02-19 326.00STOCK2 2019-02-20 328.00STOCK2 2019-02-21 326.00STOCK2 2019-02-22 320.00STOCK2 2019-02-25 317.00STOCK2 2019-02-26 319.00STOCK2 2019-02- 27 325.00STOCK2 2019-02-28 322.00STOCK2 2019-03-01 324.00STOCK2 2019-03-04 321.00STOCK2 2019-03-05 319.00STOCK2 2019-03-06 322.00STOCK2 2019-03-07 326.00STOCK2 2019-03-08 326.00STOCK2 2019-03-11 324.0040 पंक्ति (पंक्तियाँ) प्रभावित।

    निम्न क्वेरी प्रति मिलान पंक्ति पैटर्न पंक्तियों के रूप में एक पंक्ति प्रति मैच का उपयोग करके स्टॉक मूल्य में वी आकार का प्रतिनिधित्व करने वाले पैटर्न की पहचान करती है (एक अवधि जिसमें सख्ती से गिरती कीमत के बाद एक अवधि सख्ती से बढ़ती कीमत के साथ होती है)। विकल्प:

     MR.symbol, MR.matchnum, MR.startdate, MR.startprice, MR.bottomdate, MR.bottomprice, MR.enddate, MR.endprice, MR.maxprice से dbo.Ticker MATCH_RECOGNIZE चुनें (प्रतीक द्वारा विभाजन ट्रेडडेट द्वारा ऑर्डर करें) MEASURES MATCH_NUMBER () मैचनम के रूप में, A.ट्रेडडेट के रूप में प्रारंभ तिथि, A.प्राइस एएस स्टार्टप्राइस, लास्ट (बी.ट्रेडेड) एएस बॉटमडेट, लास्ट (बी.प्राइस) एएस बॉटमप्राइस, लास्ट (सी.ट्रेडडेट) एएस एंडडेट, - जैसा कि समान है अंतिम (व्यापारिक) अंतिम (सी. मूल्य) अंतिम मूल्य के रूप में, अधिकतम (यू. मूल्य) अधिकतम मूल्य के रूप में - MAX (मूल्य) के समान एक पंक्ति प्रति मैच - डिफ़ॉल्ट के बाद डिफ़ॉल्ट पिछली पंक्ति को छोड़ दें - डिफ़ॉल्ट पैटर्न (ए बी + सी + ) SUBSET U =(A, B, C) DEFINE - A डिफॉल्ट टू ट्रू, किसी भी पंक्ति से मेल खाता है, जैसे स्पष्ट रूप से A AS 1 =1 B AS B.price  PREV(C.price) ) MR के रूप में;

    खंड द्वारा विभाजन परिभाषित करता है कि आप प्रत्येक स्टॉक प्रतीक को अलग से संभालना चाहते हैं।

    ORDER BY क्लॉज व्यापार तिथि के आधार पर ऑर्डरिंग को परिभाषित करता है।

    DEFINE क्लॉज पंक्ति पैटर्न वेरिएबल्स को परिभाषित करता है जो पैटर्न में पंक्तियों के विभिन्न अनुक्रमों का प्रतिनिधित्व करते हैं। उपरोक्त उदाहरण में A किसी भी पंक्ति को शुरुआती बिंदु के रूप में दर्शाता है, B घटती कीमतों के बाद का प्रतिनिधित्व करता है (B.price PREV( सी.कीमत))।

    पैटर्न क्लॉज एक पैटर्न की पहचान करने के लिए रेगुलर एक्सप्रेशन का उपयोग करता है। उपरोक्त क्वेरी में पैटर्न (ए बी + सी +) है, जिसका अर्थ है (कोई भी पंक्ति, घटती कीमतों के साथ एक या अधिक पंक्तियों के बाद, बढ़ती कीमतों के साथ एक या अधिक पंक्तियों के बाद)। निम्नलिखित रेगुलर एक्सप्रेशन पैटर्न क्वांटिफ़ायर हैं जिनका आप उपयोग कर सकते हैं:

    * — शून्य (0) या अधिक मिलान+ — एक (1) या अधिक मिलान? - कोई मैच नहीं या एक (1) मैच, वैकल्पिक { n } - बिल्कुल n मैच { n, } - n या अधिक मैच { n, m } - n और m के बीच (समावेशी) मैच { , m } - शून्य के बीच (0 ) और m (समावेशी) मिलान {- चर -}, उदाहरण के लिए, {- A -} - इंगित करता है कि मिलान पंक्तियों को आउटपुट से बाहर रखा जाना है (केवल तभी उपयोगी है जब सभी पंक्ति प्रति मैच निर्दिष्ट हों)|, उदाहरण के लिए, ए | बी - अल्टरनेशन (), जैसे, (ए | बी) - ग्रुपिंग ^, जैसे, ^ ए {1, 3} - एक पंक्ति पैटर्न विभाजन की शुरुआत $, जैसे, ए {1, 3} $ - एक पंक्ति पैटर्न का अंत विभाजन 

    डिफ़ॉल्ट रूप से क्वांटिफायर लालची होते हैं, लेकिन आप उन्हें अनिच्छुक होने के लिए परिभाषित कर सकते हैं।

    SUBSET क्लॉज आपको वैरिएबल की नामित सबसेट सूची को परिभाषित करने की अनुमति देता है।

    MEASURES क्लॉज पैटर्न से संबंधित उपायों को परिभाषित करता है। आप पैटर्न चर और सबसेट के लिए गणना लागू कर सकते हैं। MATCH_NUMBER() फ़ंक्शन विभाजन के भीतर मैचों के लिए 1 से शुरू होने वाले अनुक्रमिक पूर्णांक प्रदान करता है। आप FIRST, LAST, PREV और NEXT जैसे संचालनों के साथ-साथ कुल गणनाओं का उपयोग कर सकते हैं।

    यह क्वेरी प्रति मिलान एक पंक्ति प्रति मिलान विकल्प के रूप में पंक्ति पैटर्न पंक्तियों का उपयोग करती है। इसका मतलब है कि परिणाम तालिका में प्रति पैटर्न मिलान की एक पंक्ति होगी, जो समूहीकरण के परिणाम के समान है। विकल्प है ALL ROWS प्रति MATCH जहाँ आप चाहते हैं कि विवरण पंक्तियाँ प्रति पैटर्न मिलान (उदाहरण के लिए शीघ्र ही अनुसरण करें) लौटाएँ।

    यह क्वेरी मैच के बाद पिछली पंक्ति को छोड़कर मैच के बाद <विकल्प पर जाएं> के रूप में उपयोग करती है। इसका मतलब है कि एक बार एक मैच मिल जाने के बाद, आप चाहते हैं कि अगला प्रयास मौजूदा मैच की आखिरी पंक्ति के बाद शुरू हो। अन्य विकल्प भी हैं जैसे वर्तमान मैच की पहली पंक्ति के बाद की पंक्ति में अगले मैच की तलाश करना (SKIP TO NEXT ROW), या एक पंक्ति पैटर्न चर के सापेक्ष स्थिति पर जाने के लिए।

    यहां इस क्वेरी का अपेक्षित आउटपुट दिया गया है:

    प्रतीक मैचनम शुरू होने की तारीख शुरू होने की कीमत नीचे की तारीख की नीचे की कीमत की समाप्ति की तारीख की अधिकतम कीमत ------------------------------------------- ---------------------------------------------------स्टॉक1 1 2019-02-13 151.00 2019-02-18 142.00 2019-02-20 152.00 152.00STOCK1 2 2019-02-27 154.00 2019-03-04 140.00 2019-03-06 143.00 154.00STOCK2 1 2019-02-14 329.00 2019-02-18 325.00 2019 -02-20 328.00 329.00STOCK2 2 2019-02-21 326.00 2019-02-25 317.00 2019-02-27 325.00 326.00STOCK2 3 2019-03-01 324.00 2019-03-05 319.00 2019-03-07 326.00 326.00

    यहां ALL ROWS प्रति MATCH विकल्प का उपयोग करके क्वेरी का थोड़ा संशोधित संस्करण दिया गया है:

    MR.symbol, MR.tradedate, MR.price, MR.matchnum, MR.classy, ​​MR.startdate, MR.startprice, MR.bottomdate, MR.bottomprice, MR.enddate, MR.endprice, MR चुनें। maxpriceFROM dbo.Ticker MATCH_RECOGNIZE (प्रतीक द्वारा विभाजन, व्यापार तिथि के अनुसार आदेश MATCH_NUMBER () के रूप में मिलान, CLASSIFIER () उत्तम दर्जे का, A. प्रारंभ दिनांक के रूप में, A. मूल्य के रूप में प्रारंभ मूल्य, अंतिम (B.व्यापार) के रूप में निचला दिनांक, अंतिम (B. कीमत) नीचे की कीमत के रूप में, अंतिम (सी.ट्रेडेड) समाप्ति तिथि के रूप में, अंतिम (सी. मूल्य) अंतिम मूल्य के रूप में, मैक्स (यू. मूल्य) अधिकतम मूल्य के रूप में मैच के बाद प्रति मैच सभी पंक्तियाँ पिछली पंक्ति के पैटर्न को छोड़ें (ए बी + सी +) सबसेट यू =(A, B, C) B को B के रूप में परिभाषित करें। 

    यहां इस क्वेरी का अपेक्षित आउटपुट दिया गया है:

    प्रतीक ट्रेडडेट मूल्य मैचनम उत्तम दर्जे का प्रारंभ दिनांक प्रारंभ मूल्य बॉटमडेट बॉटमप्राइस समाप्ति दिनांक अधिकतम मूल्य----------------------------------------- -------------------------------------------------------- -----------------स्टॉक1 2019-02-13 151.00 1 ए 2019-02-13 151.00 न्यूल न्यूल न्यूल 151.00स्टॉक1 2019-02-14 148.00 1 बी 2019- 02-13 151.00 2019-02-14 148.00 न्यूल न्यूल 151.00 स्टॉक1 2019-02-15 146.00 1 बी 2019-02-13 151.00 2019-02-15 146.00 न्यूल न्यूल 151.00 स्टॉक1 2019-02-18 142.00 1 बी 2019-02- 13 151.00 2019-02-18 142.00 NULL 151.00STOCK1 2019-02-19 144.00 1 C 2019-02-13 151.00 2019-02-18 142.00 2019-02-19 144.00 151.00STOCK1 2019-02-20 152.00 1 C 2019- 02-13 151.00 2019-02-18 142.00 2019-02-20 152.00 152.00STOCK1 2019-02 -27 154.00 2 A 2019-02-27 154.00 NULL NULL NULL 154.00STOCK1 2019-02-28 153.00 2 B 2019-02-27 154.00 2019-02-28 153.00 NULL NULL 154.00STOCK1 2019-03-01 145.00 2 B 2019 -02-27 154.00 2019-03-01 145.00 NULL NULL 154.00STOCK1 2019-03-04 140.00 2 B 2019-02-27 154.00 2019-03-04 140.00 NULL NULL 154.00STOCK1 2019-03-05 142.00 2 C 2019-02 -27 154.00 2019-03-04 140.00 2019-03-05 142.00 154.00STOCK1 2019-03-06 143.00 2 C 2019-02-27 154.00 2019-03-04 140.00 2019-03-06 143.00 154.00STOCK2 2019-02-14 329.00 1 A 2019-02-14 329.00 NULL NULL NULL 329.00STOCK2 2019-02-15 326.00 1 B 2019-02-14 329.00 2019-02-15 326.00 NULL NULL 329.00STOCK2 2019-02-18 325.00 1 B 2019-02-14 329.00 2019-02-18 325.00 NULL NULL 329.00STOCK2 2019-02-19 326.00 1 C 2019-02-14 329.00 2019-02-18 325.00 2019-02-19 326.00 329.00STOCK2 2019-02-20 328.00 1 सी 2019-02-14 329.00 2019-02-18 325.00 2019-02-20 328.00 329.00STOCK2 2019-02-21 326.00 2 A 2019-02-21 326.00 NULL NULL NULL 326.00STOCK2 2019-02-22 320.00 2 B 2019-02-21 326.00 2019-02-22 320.00 NULL NULL 326.00STOCK2 2019-02-25 317.00 2 B 2019-02-21 326.00 2019-02-25 317.00 NULL NULL 326.00STOCK2 2019-02-26 319.00 2 C 2019- 02-21 326.00 2019-02-25 317.00 2019-02-26 319.00 326.00STOCK2 2019-02-27 325.00 2 C 2019-02-21 326.00 2019-02-25 317.00 2019-02-27 325.00 326.00STOCK2 2019-03- 01 324.00 3 ए 2019-03-01 324.0 0 NULL NULL NULL 324.00STOCK2 2019-03-04 321.00 3 B 2019-03-01 324.00 2019-03-04 321.00 NULL NULL 324.00STOCK2 2019-03-05 319.00 3 B 2019-03-01 324.00 2019-03-05 319.00 NULL NULL 324.00STOCK2 2019-03-06 322.00 3 C 2019-03-01 324.00 2019-03-05 319.00 2019-03-06 322.00 324.00STOCK2 2019-03-07 326.00 3 C 2019-03-01 324.00 2019-03 -05 319.00 2019-03-07 326.00 326.0027 पंक्ति (पंक्तियाँ) प्रभावित।

    फंक्शन क्लासिफ़ियर के आधार पर माप को जोड़ने पर ध्यान दें। यह फ़ंक्शन एक स्ट्रिंग देता है जो पंक्ति पैटर्न चर का प्रतिनिधित्व करता है जिससे परिणाम पंक्ति (हमारे मामले में, ए, बी, या सी) से जुड़ी होती है।

    सुविधा R020, "पंक्ति पैटर्न पहचान:WINDOW खंड"

    फीचर R020 विंडो फ्रेम को और प्रतिबंधित करने के लिए विंडोिंग ओवर क्लॉज (या विंडो विनिर्देश का नामकरण करते समय विंडो क्लॉज) के हिस्से के रूप में पंक्ति पैटर्न पहचान का उपयोग करता है। जैसे विंडो पार्टीशन इनपुट टेबल एक्सप्रेशन की पंक्तियों को प्रतिबंधित करता है (FROM… WHERE… GROUP BY… HAVING), और विंडो फ्रेम आगे विंडो विभाजन को प्रतिबंधित करता है, फीचर R020 के साथ आप पूर्ण विंडो फ्रेम को कम किए गए विंडो फ्रेम तक सीमित कर देते हैं। पैटर्न मैच बनाने वाली पंक्तियों के बाद। इस आलेख में पहली क्वेरी में उपयोग किए गए समान पंक्ति पैटर्न मिलान विनिर्देश का उपयोग करते हुए, WINDOW क्लॉज के साथ इस सुविधा को प्रदर्शित करने वाली एक क्वेरी यहां दी गई है:

    चुनें T.symbol, T.tradedate, T.price, startdate over W, startprice over W, बॉटमडेट ओवर W, बॉटमप्राइस ओवर W, एंडडेट ओवर W, एंडप्राइस ओवर W, मैक्सप्राइस ओवर WFROM dbo.Ticker TWINDOW W AS ( ट्रेडडेट मापों द्वारा प्रतीक ऑर्डर द्वारा विभाजन ए। प्रारंभ दिनांक के रूप में व्यापार, ए मूल्य प्रारंभ मूल्य के रूप में, अंतिम (बी ट्रेडडेट) नीचे की तारीख के रूप में, अंतिम (बी मूल्य) निचले मूल्य के रूप में, अंतिम (सी ट्रेडडेट) समाप्ति तिथि के रूप में, अंतिम (सी। मूल्य) अंतिम मूल्य के रूप में, MAX(U.price) वर्तमान पंक्ति के बीच अधिकतम मूल्य पंक्तियों के रूप में और मैच के बाद अंतिम अंतिम पंक्ति प्रारंभिक के बाद असीमित - पैटर्न पूर्ण विंडो फ्रेम की पहली पंक्ति से शुरू होना चाहिए; विकल्प सीक पैटर्न (ए बी + सी +) सबसेट है यू =(ए, बी, सी) बी को बी मूल्य के रूप में परिभाषित करें <पिछला (बी मूल्य), सी एएस सी मूल्य> पिछला (सी मूल्य));

    विंडोिंग के साथ पंक्ति पैटर्न पहचान का उपयोग करते समय, पूर्ण विंडो फ़्रेम वर्तमान पंक्ति से प्रारंभ होना चाहिए। इस प्रश्न में प्रारंभिक विकल्प के उपयोग पर ध्यान दें। इस विकल्प का मतलब है कि आपको एक मैच तभी मिलता है जब पैटर्न वर्तमान पंक्ति से शुरू होता है। विकल्प SEEK है, जिसका अर्थ है कि एक मैच की खोज वर्तमान पंक्ति से शुरू होती है, लेकिन पूर्ण विंडो फ्रेम के अंत तक इसकी अनुमति है। किसी भी तरह से, यदि कोई मिलान पाया जाता है, तो कम किए गए विंडो फ़्रेम में केवल पैटर्न मिलान पंक्तियाँ होती हैं, अन्यथा, छोटा किया गया विंडो फ़्रेम खाली होता है। प्रति पूर्ण विंडो फ़्रेम में केवल एक पंक्ति पैटर्न मिलान की मांग की जाती है।

    क्वेरी की SELECT सूची में देखें कि आप W पर परिकलित MEASURES क्लॉज़ में परिभाषित उपायों को वापस कर सकते हैं, जो कि कम विंडो फ़्रेम है।

    एक पंक्ति प्रति मैच विकल्प के साथ FROM क्लॉज में पंक्ति पैटर्न पहचान का उपयोग करते हुए, इस आलेख में पहली क्वेरी के परिणाम को याद करें:

    प्रतीक मैचनम शुरू होने की तारीख शुरू होने की कीमत नीचे की तारीख की नीचे की कीमत की समाप्ति की तारीख की अधिकतम कीमत ------------------------------------------- ---------------------------------------------------स्टॉक1 1 2019-02-13 151.00 2019-02-18 142.00 2019-02-20 152.00 152.00STOCK1 2 2019-02-27 154.00 2019-03-04 140.00 2019-03-06 143.00 154.00STOCK2 1 2019-02-14 329.00 2019-02-18 325.00 2019 -02-20 328.00 329.00STOCK2 2 2019-02-21 326.00 2019-02-25 317.00 2019-02-27 325.00 326.00STOCK2 3 2019-03-01 324.00 2019-03-05 319.00 2019-03-07 326.00 326.00

    WINDOW क्लॉज में रो पैटर्न रिकग्निशन का उपयोग करते हुए, हमारी आखिरी क्वेरी का अपेक्षित आउटपुट यहां दिया गया है:

    प्रतीक व्यापार दिनांक मूल्य प्रारंभ दिनांक प्रारंभ मूल्य नीचे दिनांक नीचे मूल्य समाप्ति दिनांक अधिकतम मूल्य ----------------------------------------- ------------------------------------------------------------ --STOCK1 2019-02-12 150.00 NULL NULL NULL NULL NULLSTOC1 2019-02-13 151.00 2019-02-13 151.00 2019-02-18 142.00 2019-02-20 152.00 152.00STOCK1 2019-02-14 148.00 NULL NULL न्यूल न्यूल न्यूल न्यूल न्यूलस्टॉक1 2019-02-15 न्यूल न्यूल न्यूल न्यूल न्यूल स्टॉक1 2019-02-21 152.00 न्यूल न्यूल न्यूल न्यूल एन 2019-02-22 153.00 न्यूल न्यूल न्यूल न्यूल न्यूल न्यूलस्टॉक1 2019-02-25 154.00 न्यूल न्यूल न्यूल न्यूल न्यूल न्यूलस्टॉक1 2019-02-26 154.00 न्यूल न्यूल न्यूल न्यूल न्यूल स्टॉक1 2019-02-27 154.00 2019- 02-27 154.00 2019-03-04 140.00 2019-03-06 143.00 154.00STOCK1 2019-02-28 153.00 न्यूल न्यूल न्यूल न्यूल न्यूल स्टॉक1 2019-03-01 145.00 न्यूल न्यूल न्यूल न्यूल न्यूल स्टॉक1 2019-03-04 140.00 न्यूल न्यूल न्यूल न्यूल न्यूल न्यूलस्टॉक1 2019-03-05 142.00 न्यूल न्यूल न्यूल न्यूल न्यूल स्टॉक1 2019-03-06 143.00 न्यूल न्यूल न्यूल न्यूल न्यूल स्टॉक1 2019-03-07 142.00 न्यूल न्यूल न्यूल 2019-02-13 329.00 न्यूल न्यूल न्यूल न्यूल न्यूल स्टॉक2 2019-02-12 330.00 न्यूल न्यूल न्यूल न्यूल न्यूल स्टॉक1 2019-03-08 140.00 न्यूल न्यूल न्यूल न्यूल न्यूलस्टॉक2 2019-02-14 329.00 2019-02-14 329.00 2019-02-18 325.00 2019-02-20 328.00 329.00स्टॉक2 2019-02-15 326.00 न्यूल न्यूल न्यूल न्यूल न्यूलस्टॉक2 2019-02-18 325.00 न्यूल न्यूल न्यूल न्यूल न्यूल स्टॉक 2 2019-02-19 326.00 न्यूल न्यूल न्यूल न्यूल न्यूल स्टॉक 2 2019-02-20 328.00 न्यूल न्यूल न्यूल न्यूल न्यूल स्टॉक 2 2019-02-21 326.00 2019-02-21 326.00 2 019-02-25 317.00 2019-02-27 325.00 326.00STOCK2 2019-02-22 320.00 न्यूल न्यूल न्यूल न्यूल न्यूल न्यूलस्टॉक2 2019-02-25 317.00 न्यूल न्यूल न्यूल न्यूल न्यूल स्टॉक2 2019-02-26 319.00 न्यूल न्यूल न्यूल न्यूल न्यूल न्यूल न्यूल न्यूलस्टॉक2 2019-02-27 325.00 न्यूल न्यूल न्यूल न्यूल न्यूलस्टॉक2 2019-02-28 322.00 न्यूल न्यूल न्यूल न्यूल न्यूलस्टॉक2 2019-03-01 324.00 2019-03-01 324.00 2019-03-05 319.00 2019-03 -07 326.00 326.00STOCK2 2019-03-04 321.00 न्यूल न्यूल न्यूल न्यूल न्यूल न्यूलस्टॉक2 2019-03-05 319.00 न्यूल न्यूल न्यूल न्यूल न्यूल स्टॉक 2 2019-03-06 322.00 न्यूल न्यूल न्यूल न्यूल न्यूलस्टॉक2 2019-03-07 326.00 व्यर्थ न्यूल न्यूल न्यूल न्यूल न्यूल न्यूलस्टॉक2 2019-03-08 326.00 न्यूल न्यूल न्यूल न्यूल न्यूल न्यूलस्टॉक2 2019-03-11 324.00 न्यूल न्यूल न्यूल न्यूल न्यूल 40 पंक्ति (पंक्तियां) प्रभावित हैं।

    ध्यान दें कि आपको आउटपुट में सभी विस्तृत पंक्तियाँ मिलती हैं, और जहाँ एक पैटर्न मिलान शुरू होता है, आपको कम विंडो फ्रेम के विरुद्ध अनुरोधित पंक्ति पैटर्न उपायों का परिणाम मिलता है।

    अपना वोट दें

    यह पूरी तरह से समझ में आ गया है कि Microsoft के लिए T-SQL में एक विशेषता जोड़ना - विशेष रूप से इतना महत्वपूर्ण - एक बहुत ही महत्वपूर्ण निवेश है। लेकिन टी-एसक्यूएल में जोड़ी जाने वाली सुविधाओं के बारे में बहुत अच्छी बात यह है कि वे काफी हद तक वहां हमेशा के लिए रहती हैं। इस तरह के टी-एसक्यूएल सुधारों के लिए एक बहुत बड़ा समुदाय भूखा है।

    यदि आपको लगता है कि पंक्ति पैटर्न पहचान SQL सर्वर के लिए एक महत्वपूर्ण अतिरिक्त है, तो सुनिश्चित करें कि आपने अपना वोट डाला है। साथ ही, Microsoft द्वारा प्रस्तावित सुविधा को प्राथमिकता देने की अधिक संभावना है यदि वे ग्राहकों के बारे में जानते हैं और ऐसे मामलों का उपयोग करते हैं जो इससे लाभान्वित हो सकते हैं, और इस समय ऐसे ग्राहक या तो अन्य उत्पादों या अधिक जटिल समाधानों का उपयोग कर रहे हैं। यदि आप या आपके ग्राहक आरपीआर को आपके लिए फायदेमंद मानते हैं, और आपके पास ऐसे मामलों का उपयोग है जिन्हें आप साझा कर सकते हैं, तो सुनिश्चित करें कि आप फीडबैक आइटम में टिप्पणियां जोड़ते हैं और माइक्रोसॉफ्ट को बताते हैं।


    1. Database
    2.   
    3. Mysql
    4.   
    5. Oracle
    6.   
    7. Sqlserver
    8.   
    9. PostgreSQL
    10.   
    11. Access
    12.   
    13. SQLite
    14.   
    15. MariaDB
    1. SQL में पंक्तियों की संख्या कैसे करें

    2. एक रेस्तरां वितरण डेटा मॉडल

    3. RANK, DENSE_RANK और ROW_NUMBER फ़ंक्शंस के बीच समानताएं और अंतर

    4. कैपजेमिनी की पूर्व कार्यकारी, सुनीता रे, एंटरप्राइज़ बिक्री का विस्तार करने के लिए स्केलग्रिड DBaaS में शामिल होती हैं

    5. कार किराए पर लेना ड्राइविंग जितना आसान है:कार रेंटल कंपनी के लिए एक डेटा मॉडल