What is the most efficient way to create an order count summary by hour, day, month in SQL Server 2005? -
एक तालिका को देखते हुए:
तालिका #orders बनाएं (ऑर्डिड इंट, ऑर्डरडेट टाइमडेटाक) < / कोड> एसक्यूएल को वर्तमान और पिछले 24 घंटों से चालू होने वाले आदेशों की संख्या और पिछले 7 दिनों के लिए कुल ऑर्डर और पिछले 7 दिनों के लिए ऑर्डर की रिपोर्ट करने के लिए सबसे अच्छा तरीका क्या है वर्तमान सप्ताह और पिछले 4 सप्ताह, और महीनों और पिछले 6 महीनों के लिए कुल आदेश?
मैं सोच रहा हूं कि यह विश्लेषणात्मक कार्यों का उपयोग करके एक एकल एसक्यूएल में कुशलतापूर्वक लुढ़का जा सकता है, या यदि 4 sql बयान पैदा करते हैं डेटा के 4 समूह एकमात्र (या सर्वोत्तम) तरीका है।
इसके अलावा, प्रति घंटा / दिन / सप्ताह समूहीकरण दिया जाता है, एक एसक्यूएल सर्वर में ऐसा कैसे होगा? डीटेटमुम्स गधे में दर्द होने लगते हैं, मुझे उनके साथ ऐसा कुछ करना है ...
विचार? SSAS क्यूब में रखें और वहां से हो सकता है?
चुनें DATEPART (महीना, ऑर्डर डेट टाइम ), DatePart (सप्ताह, orderdatetime), DatePart (दिन, orderdatetime), COUNT (*) #orders ग्रुप से DatePart (महीने, orderdatetime), DatePart (सप्ताह, orderdatetime) द्वारा, DatePart (दिन, orderdatetime) रोलअप के साथ
यह एक एकल प्रश्न में COUNT
का दिन, सप्ताह और महीने का समूह होगा।
सप्ताह के रोलअप में एक NULL होगा
में DatePart (दिन, orderdatetime)
स्तंभ, महीने रोलअप्स एक शून्य
होगा दोनों DatePart (दिन, orderdatetime) में
और DATEPART (सप्ताह, ऑर्डर-डेट टाइम)
कॉलम।
इसे बिना किसी अंतर के हर घंटे, दिन, सप्ताह या महीने के लिए बनाने के लिए, CTE
S:
साथ q_hours के रूप में (चयन 0 as col_hour union सभी को चुनें col_hour + 1 से q_hours जहां Col_hour & lt; 22), q_days के रूप में (चयन 0 के रूप में col_day यूनिअन सभी का चयन करें col_day + 1 q_days से कहां col_day के & lt; 31), q_months के रूप में (चयन 0 के रूप में col_month यूनिअन सभी का चयन करें col_month + 1 q_months से कहां col_month के & lt; 12) का चयन करें col_month, col_day , col_hour, COUNT (OrderID) q_hours से शामिल हों q_days क्रॉस शामिल हों q_months वाम DateDiff (महीने, orderdatetime, GETDATE ()) = col_month और DateDiff (दिन, orderdatetime, GETDATE ())% 31 = col_day और DateDiff (ON #orders शामिल हों पार घंटा, orderdatetime, GETDATE ())% 24 = col_hour col_month, col_day, रोलअप होने (साथ col_hour द्वारा समूह के col_month = 0 और col_day = 0 और col_hour शून्य) नहीं है - अब से 24 घंटे के भीतर सभी घंटे या (col_month = 0 और col_day & lt; = 7 और col_hour आईएनएस है एलएल) - अब या (col_month करें & lt से 7 दिनों के भीतर सभी दिन; = 6 और col_day शून्य है और col_hour शून्य) है - अब से
6>
Comments
Post a Comment