SSMS
 sql >> डेटाबेस >  >> Database Tools >> SSMS

असमान प्रतिशत बकेट में विभाजित सेट

पता नहीं, अगर मैं इसे सही तरीके से समझ पाऊं...

सबसे पहले तो ऐसा लगता है कि यहाँ एक स्पष्ट गलती है:

    WHEN t.bucket > 60 AND t.bucket <=90 THEN 'NULL'

क्या यह नहीं होना चाहिए:

    WHEN t.bucket >90 THEN 'NULL'

समारोह NTILE आपके सेट को बाल्टियों में भी फैला देगा। मेरा आउटपुट जांचें और पता लगाएं कि यह कोने-मामलों में कैसे व्यवहार करता है। मेरा सुझाव है कि प्रति पंक्ति परिकलित प्रतिशत का उपयोग यहां की तरह करें:

WITH tally
(vals, bucket)
AS
(
    SELECT
         DATEADD(DAY, - ROW_NUMBER() OVER (ORDER BY (SELECT NULL)), GETDATE())
        ,NTILE(100) OVER (ORDER BY (SELECT NULL))
    FROM
    (
        VALUES (0), (0), (0), (0), (0), (0), (0), (0), (0)) AS a(n)
        CROSS JOIN (VALUES (0), (0), (0), (0), (0), (0), (0), (0), (0)) AS b(n)
        CROSS JOIN (VALUES (0), (0), (0), (0), (0), (0), (0), (0), (0)) AS c(n)
    )
SELECT *
INTO #tmpBuckets
FROM Tally;

--मैं इस #tmpBuckets-table का उपयोग आपके मेरे पास एक टेबल . के करीब जाने के लिए करता हूं परिदृश्य

WITH Numbered AS
(
    SELECT *
          ,ROW_NUMBER() OVER(ORDER BY vals DESC) / ((SELECT COUNT(*) FROM #tmpBuckets)/100.0)  AS RunningPercentage
    FROM #tmpBuckets
)
,ComputeBuckets AS
(
    SELECT
     t.*
    , CASE
        WHEN t.RunningPercentage <= 35 THEN 'a'
        WHEN t.RunningPercentage > 35 AND t.RunningPercentage <=60 THEN 'b'
        WHEN t.RunningPercentage > 60 AND t.RunningPercentage <=90 THEN 'c'
        WHEN t.RunningPercentage >90  THEN 'NULL'
    END AS ShnugoMethod
    , CASE
        WHEN t.bucket <= 35 THEN 'a'
        WHEN t.bucket > 35 AND t.RunningPercentage <=60 THEN 'b'
        WHEN t.bucket > 60 AND t.RunningPercentage <=90 THEN 'c'
        WHEN t.bucket > 90  THEN 'NULL'
    END AS ZikatoMethod
    FROM Numbered t
)
SELECT cb.*
FROM ComputeBuckets cb
ORDER BY cb.vals DESC

GO
DROP TABLE #tmpBuckets;

मुझे लगता है कि आप जानते हैं, स्रोत तालिका को अद्यतन करने के लिए ऐसे सीटीई का उपयोग कैसे करें। अन्यथा एक और प्रश्न के साथ वापस आएं :-)




  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. GUID को वर्चर में बदलें(32)

  2. केवल एक ssms उदाहरण में एकाधिक .sql फ़ाइलें कैसे खोलें

  3. क्या वास्तविक निष्पादन योजना शामिल करने के साथ किसी क्वेरी को प्रोग्रामेटिक रूप से निष्पादित करने का कोई तरीका है और देखें कि कोई अनुक्रमणिका सुझाव है या नहीं

  4. SSMS एक्स्टेंसिबिलिटी / एडिन - वर्तमान डेटाबेस और सर्वर प्राप्त करें

  5. SSMS से dbForge Studio में आसानी से कैसे स्विच करें