MySQL query to count non-null values in a single row

后端 未结 2 1491
孤城傲影
孤城傲影 2021-01-24 15:33

I\'m trying to put together a MYSQL query that will count the number of Non-Null (or better yet, non-zero) values in select fields in a single row and then sort from lowest to h

相关标签:
2条回答
  • 2021-01-24 15:52

    try This:

    Select id, Count1, Count2, Count3, Count4
    From
        (Select 
            Sum(Case When IsNull(Score_1,0) = 0 Then 1 Else 0 End) Count1,
            Sum(Case When IsNull(Score_2,0) = 0 Then 1 Else 0 End) Count2,
            Sum(Case When IsNull(Score_3,0) = 0 Then 1 Else 0 End) Count3,
            Sum(Case When IsNull(Score_4,0) = 0 Then 1 Else 0 End) Count4
        From Table
        Group By Id) Z  -- This column (Id) better not be the PK for this table!!!
    Order By Count1 + Count2 + Count3 + Count4
    
    0 讨论(0)
  • 2021-01-24 15:58

    This should do what you want:

    SELECT ID, Name, Score_1, Score_2, Score_3
    FROM Table1
    ORDER BY (Score_1 = 0) + (Score_2 = 0) + (Score_3 = 0)
    

    Result:

    ID  Name   Score_1  Score_2  Score_3
    4   Mike   4        5        5      
    1   Dan    8        7        0      
    2   Joe    0        0        3      
    3   Chris  0        0        0      
    
    0 讨论(0)
提交回复
热议问题