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

टी-एसक्यूएल पर आइटम फ़्रीक्वेंसी गिनने में समस्या

यदि आप SQL सर्वर 2005+ का उपयोग कर रहे हैं

With 
    WinnerCounts As
    (
        Select #Numbers.Number, Count(Results.Winner) As Results
        FROM #Numbers
            JOIN Results 
                On #Numbers.Number = Results.Winner 
    )
    , SecondCounts As
    (
        Select #Numbers.Number, Count(Results.Second) As Results
        FROM #Numbers
            JOIN Results 
                On #Numbers.Number = Results.Second
    )
    , ThirdCounts As
    (
        Select #Numbers.Number, Count(Results.Third) As Results
        FROM #Numbers
            JOIN Results 
                On #Numbers.Number = Results.Third
    )
Select Numbers.Number, Coalesce(WinnerCounts.Results,0) As Winner, Coalesce(SecondCounts.Result,0) As Second, Coalesce(ThirdCounts.Result,0) As Third
From #Numbers
    Left Join WinnerCounts
        On WinnerCounts.Results = #Numbers.Number
    Left Join SecondCounts
        On SecondCounts.Results = #Numbers.Number
    Left Join ThirdCounts
        On ThirdCounts.Results = #Numbers.Number

एक अन्य संभावित समाधान जो SQL सर्वर के पुराने संस्करणों में काम करेगा:

Select #Numbers.Number
    , SUM( Case When Winners.Winner Is Not Null Then 1 Else 0 End ) As WinnerCount
    , SUM( Case When Seconds.Second Is Not Null Then 1 Else 0 End ) As SecondCount
    , SUM( Case When Thirds.Third Is Not Null Then 1 Else 0 End ) As ThirdCount
From #Numbers
    Left Join Results As Winners
        On Winners.Winner = #Numbers.Number
    Left Join Results As Seconds
        On Seconds.Second = #Numbers.Number
    Left Join Results As Thirds
        On Thirds.Third = #Numbers.Number
Group By #Numbers.Number


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. टीएसक्यूएल में फ़ंक्शन पैरामीटर के सामने 'एन' डालने का उद्देश्य क्या है?

  2. कोशिश-पकड़ का उपयोग करने से तेज़ी से डालने से पहले प्राथमिक कुंजी मान की जांच कर रहा है?

  3. SQL सर्वर में एक विदेशी कुंजी बाधा को कैसे अक्षम करें (T-SQL उदाहरण)

  4. SQL सर्वर (T-SQL उदाहरण) में 'डेटाटाइमऑफ़सेट' को 'डेटाटाइम' में बदलें

  5. क्लस्टर्ड इंडेक्स और यूनिक इंडेक्स में क्या अंतर है?