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

मैं प्रत्येक समूह से शीर्ष 5 प्रतिशत का चयन कैसे करूं?

आप NTILE . के साथ युग्मित CTE (कॉमन टेबल एक्सप्रेशन) का उपयोग कर सकते हैं विंडोिंग फ़ंक्शन - यह आपके डेटा को आपकी आवश्यकता के अनुसार कई स्लाइस में काट देगा, उदा। आपके मामले में, 20 स्लाइस (प्रत्येक 5%) में।

;WITH SlicedData AS
(
   SELECT Category, Name, COUNT(Name) Total,
            NTILE(20) OVER(PARTITION BY Category ORDER BY COUNT(Name) DESC) AS  'NTile'
   FROM #TEMP
   GROUP BY Category, Name
)
SELECT *
FROM SlicedData
WHERE NTile > 1

यह मूल रूप से आपके डेटा को Category,Name . द्वारा समूहित करता है , किसी और चीज़ के आदेश (सुनिश्चित नहीं हैं कि COUNT(Name) वास्तव में वह चीज है जो आप यहां चाहते हैं), और फिर इसे 20 टुकड़ों में काटता है, प्रत्येक आपके डेटा विभाजन के 5% का प्रतिनिधित्व करता है। NTile = 1 . वाला टुकड़ा शीर्ष 5% टुकड़ा है - सीटीई से चयन करते समय इसे अनदेखा करें।

देखें:

अधिक जानकारी के लिए



  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 सर्वर में DROP टेबल स्टेटमेंट को समझना

  2. अद्यतन करें और स्ट्रिंग के भाग को बदलें

  3. एसक्यूएल सर्वर में वर्ड फंक्शन में नंबर कैसे लिखें?

  4. SQL सर्वर पर EAV

  5. SQL सर्वर त्रुटि 7222:"इस उदाहरण पर केवल एक SQL सर्वर प्रदाता की अनुमति है"