Mysql sum(if())およびcount(if())の使用法



Mysql Sum Count Usage



SELECT SUM(extcredits1) AS e1 FROM test SELECT SUM(if(category=1,size,0)) ,COUNT(if(category=1,true,null)) FORM t_file

分析:

sum(if(category=1,size,0))

sum関数は、値型の値を返します。 category = 1の場合、サイズを返します。カテゴリが1に等しくない場合、0を返します。



count(if(category=1,true,null))

count関数はブール値を返します。 category = 1の場合、trueを返します。 categoryが1に等しくない場合、nullを返します。 count(If(category = 1,1,0)として記述されている場合、返されるすべてがtrueです。すべての時間がカウントされ、count()ブレークがtrueまたはnullの場合、nullでない場合はcount

nullの場合、カウントされません。



count(if())はcount(if(expression expression、true、null))として記述する必要があります

例:

元のテーブル:



id fenlei time 1 Category 1 20130316 2 Category 2 20130316 3 Classification 3 20130317 4 Classification 2 20130317 5 Classification 3 20130318

新しいテーブルを挿入するには、テーブルを確認して結果を取得する必要があります
新しいテーブル構造:

id fenlei_1 fenlei_2 fenlei_3 date 1 1 1 0 20130316 2 0 1 1 20130317 3 0 0 1 20130317

これは、1日の各カテゴリのメッセージ数を取得することです。

Select time,sum(if(fenlei='category 1',1,0 )), Sum(if(fenlei='category 2',1,0 )),sum(if(fenlei='category 3',1,0 )) from tt group by time

簡単な合計に来る

select sum(qty) as total_qty from inventory_product group by product_id

これにより、すべての製品の数量がカウントされます。

しかし残念ながら、私たちのシステムには実際にはかなりの負の値があります。そして、正の数量とif関数を数えたいだけです。 SQLは次のとおりです。

select sum(if(qty > 0, qty, 0)) as total_qty from inventory_product group by product_id

これは、qty> 0の場合、qtyの値がtotal_qtyに追加されることを意味します。それ以外の場合、0がtotal_qtyに追加されます。

もう少し強化する:

select sum( if( qty > 0, qty, 0)) as total_qty , sum( if( qty <0, 1, 0 )) as negative_qty_count from inventory_product group by product_id

このようにして、ネガティブレコードがいくつあるかを数えることができます。この記録データが異常であることを人々に伝えるための便利なプログラム