परिदृश्य:
आप SQL सर्वर डेवलपर के रूप में काम कर रहे हैं। आपको dbo.Customer तालिका से नमूना यादृच्छिक डेटा प्रदान करने के लिए कहा जाता है। आपको तालिका से यादृच्छिक 100 पंक्तियाँ या कुल डेटा का कुछ प्रतिशत प्रदान करने के लिए कहा जा सकता है। आवश्यक आउटपुट प्रदान करने के लिए आप किस क्वेरी का उपयोग करेंगे?समाधान:
पिछली पोस्ट में, हमने सीखा कि टेबल से टॉप एन रो कैसे प्राप्त करें। हम अपनी चुनिंदा क्वेरी में TOP का उपयोग करके या तो पंक्ति गणना या रिकॉर्ड का प्रतिशत प्रदान कर सकते हैं जिसे हम तालिका से प्राप्त करना चाहते हैं।हम उसी शीर्ष खंड का उपयोग कर सकते हैं लेकिन जैसा कि हमें यादृच्छिक रिकॉर्ड प्रदान करने के लिए कहा जाता है , हमें पहले उन्हें बेतरतीब ढंग से क्रमबद्ध करने की आवश्यकता है। हम खंड के अनुसार क्रम में newid() फ़ंक्शन का उपयोग कर सकते हैं ताकि उन्हें यादृच्छिक रूप से सॉर्ट किया जा सके।
आइए dbo बनाएं। कुछ नमूना डेटा के साथ ग्राहक तालिका।
Create table dbo.Customer (Id int, FName VARCHAR(50), LName VARCHAR(50), CountryShortName CHAR(2)) GO insert into dbo.Customer Values ( 1,'Raza','M','PK'), (2,'Rita','John','US'), (3,'Sukhi','Singh',Null), (4,'James','Smith','CA'), (5,'Robert','Ladson','US'), (6,'Alice','John','US')
1) यादृच्छिक रिकॉर्ड प्राप्त करने के लिए क्रम में NewID ( ) का उपयोग करें
मान लें कि अगर हम dbo.Customer तालिका से 3 यादृच्छिक रिकॉर्ड प्राप्त करना चाहते हैं, तो हम नीचे क्वेरी का उपयोग कर सकते हैं।
Select top 3 * From dbo.Customer order by NEWID()
एसक्यूएल सर्वर टेबल से रैंडम रिकॉर्ड कैसे प्राप्त करें - एसक्यूएल सर्वर / टीएसक्यूएल ट्यूटोरियल |
आप चाहें तो प्रतिशत का उपयोग भी कर सकते हैं जैसा कि नीचे दिखाया गया है
Select top 30 percent * From dbo.Customer order by NEWID()
NewID() - SQL Server / TSQL Tutorial के साथ शीर्ष प्रतिशत का उपयोग करके SQL सर्वर तालिका से यादृच्छिक रिकॉर्ड कैसे प्राप्त करें |
2) TABLESAMPLE सिस्टम का उपयोग करके
Microsoft Books Online के अनुसार "TABLESAMPLE SYSTEM पंक्तियों का अनुमानित प्रतिशत लौटाता है और तालिका में प्रत्येक भौतिक 8-KB पृष्ठ के लिए एक यादृच्छिक मान उत्पन्न करता है। पृष्ठ के लिए यादृच्छिक मान और क्वेरी में निर्दिष्ट प्रतिशत के आधार पर, एक पृष्ठ या तो नमूने में शामिल है या बहिष्कृत है। शामिल किया गया प्रत्येक पृष्ठ नमूना परिणाम सेट में सभी पंक्तियों को लौटाता है।
यहां से आप समझ सकते हैं कि यदि आपके पास कुछ पृष्ठों वाली छोटी तालिका है, तो आप हो सकता है कि TableSample का उपयोग न करना चाहें क्योंकि इसमें संपूर्ण पृष्ठ शामिल या बहिष्कृत होगा। तालिका में कुछ रिकॉर्ड के साथ, आप विधि 1 का उपयोग करना चाह सकते हैं और बड़ी तालिकाओं के लिए आप TableSample का उपयोग कर सकते हैं।
यदि मैं अपने dbo पर क्वेरी के नीचे चलाऊंगा। जब रिकॉर्ड मिलते हैं, तो यह सभी रिकॉर्ड वापस कर देगा क्योंकि उन्हें एक पृष्ठ पर रखा गया है।
Select * From dbo.Customer tablesample (30 percent)
जैसा कि नीचे दिखाया गया है, आप तालिका नमूने के साथ अपनी इच्छित पंक्तियों का भी उपयोग कर सकते हैं। लौटाई गई पंक्तियाँ भिन्न हो सकती हैं। आप चुनिंदा क्वेरी में शीर्ष n का उपयोग करके उन्हें सीमित कर सकते हैं।
Select * From dbo.Customer tablesample (2 rows)
जब मैंने dbo.Customer तालिका पर कुल 6 पंक्तियों के साथ उपरोक्त क्वेरी निष्पादित की। इसने मुझे या तो कोई पंक्ति नहीं लौटाई या उनमें से सभी छह।
यदि आप सीमित करना चाहते हैं, तो आप नीचे दी गई क्वेरी का उपयोग कर सकते हैं। एक बार फिर, मैं बड़ी तालिका के साथ TableSample का उपयोग करने का सुझाव दूंगा जहां आपके पास एकाधिक डेटा पृष्ठों पर डेटा है।
Select top 2 * From dbo.Customer tablesample (2 rows)