0

データベース: tennis、つまりテニス クラブ。

説明した表:penalties

列: paymentnoamountplayerno

仕事:

  • 違約金を高、中、低に分類 - 完了!
  • 次に、低カテゴリのペナルティの数を数えます - 助けが必要です。

カウント関数を使用せずにパート 2 を実行するにはどうすればよいですか? これは可能ですか?

1 の SQL クエリ:

use tennis;

select tennis.penalties.paymentno, 
       tennis.penalties.amount, 
       tennis.penalties.playerno,
       case 
         when playerno >= 0 and  playerno <= 40 then 'low'
         when playerno > 40 and  playerno < 80 then 'medium'
         when playerno > 80 then 'high'
       end
from tennis.penalties;

ありがとう。

4

1 に答える 1

1
SUM(playerno >= 0 and playerno <= 40) AS count_penalties_in_low

また

SUM(CASE WHEN playerno >= 0 and playerno <= 40 THEN 1 ELSE 0 END) AS count_penalties_in_low

つまり、技術的には 1 を要約すると、実際には count に等しくなります。

PS:

playerno >= 0 and  playerno <= 40

に書き換えることができます

playerno BETWEEN 0 AND 40

PPS:

playerno= 80 はどの条件にも当てはまらない

PPPS: そのケースを次のように書きます。

   case 
     when playerno <= 40 then 'low'
     when playerno <= 80 then 'medium'
                         else 'high'
   end

PPPPS: 機能のないソリューション (コンセプト)

SELECT @I:=@I+1, other_columns FROM table, (SELECT @I:=0) x

@I を使用すると、必要なものを数えることができます

しかし、この場合、それはひどい解決策です

于 2012-07-04T00:19:53.760 に答える