MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQL COALESCE()関数をMySQL SUM()関数と一緒に使用して、出力をカスタマイズするにはどうすればよいですか?


MySQL SUM()関数が値のない列、引数を取得すると、出力として0ではなくNULLを返します。ただし、この出力をカスタマイズして出力として0を表示する場合は、MySQL COALESCE()関数を使用できます。この関数は、2つの引数を受け入れ、最初の引数がNULLの場合は2番目の引数を返し、それ以外の場合は最初の引数を返します。それを説明するために、次のデータを持つ「入札」テーブルの例を取り上げています-

mysql> Select * from tender;

+----+---------------+--------------+
| Sr | CompanyName   | Tender_value |
+----+---------------+--------------+
| 1  | Abc Corp.     | 250.369003   |
| 2  | Khaitan Corp. | 265.588989   |
| 3  | Singla group. | 220.255997   |
| 4  | Hero group.   | 221.253006   |
| 5  | Honda group   | NULL         |
+----+---------------+--------------+

5 rows in set (0.00 sec)
>

MySQL SUM()関数は、列に値がないため、「HondaGroup」によって引用された入札額の合計を見つけようとするとNULLを返します。

mysql> Select SUM(Tender_value) From Tender Where CompanyName = 'Honda Group';

+-------------------+
| SUM(Tender_value) |
+-------------------+
|              NULL |
+-------------------+

1 row in set (0.00 sec)

ただし、この出力をNULLから0にカスタマイズする場合は、SUM()でCOALESCE関数を使用して、「HondaGroup」によって見積もられた入札額の合計を見つけることができます。

mysql> Select COALESCE(SUM(Tender_value),0) From Tender Where CompanyName = 'Honda Group';

+-------------------------------+
| COALESCE(SUM(Tender_value),0) |
+-------------------------------+
|                      0.000000 |
+-------------------------------+

1 row in set (0.00 sec)

これで、SUM()でCOALESCE関数を使用して、「名前」列にない名前である「Mohan」によって入力されたページの総数を見つけると、MySQL SUM()関数は0を返します-

mysql> SELECT COALESCE(SUM(daily_typing_pages),0) FROM employee_tbl WHERE Name = ‘Mohan’;

+-------------------------+
| SUM(daily_typing_pages) |
+-------------------------+
|                       0 |
+-------------------------+

1 row in set (0.00 sec)

上記の結果セットから、データ型に関係なく列に値がない場合、MySQL SUM()関数がNULLを返すことは明らかです。


  1. MySQL IN()関数を使用して列の名前との比較に基づいて出力を取得するにはどうすればよいですか?

    このシナリオでは、列の名前を「式」として使用する必要があります。これは、リスト内の値と比較されます。列の値がリスト内で一致する場合、出力が生成されます。それを理解するために、次のデータを持つ従業員テーブルの例を考えてみましょう- mysql> Select * from Employee; +----+--------+--------+ | ID | Name   | Salary | +----+--------+--------+ | 1  | Gaurav | 50000  | | 2  | Rahul  | 20000 &nbs

  2. MySQLで月ごとにテーブルの値を合計するにはどうすればよいですか?

    これには、EXTRACT()を使用します。これにより、特定の月のレコードを抽出できます。たとえば、1月のすべての価格を追加します(年に関係なく)。 まず、-を作成しましょう mysql> create table DemoTable1415    -> (    -> ProductPurchaseDate date,    -> ProductPrice int    -> ); Query OK, 0 rows affected (0.53 sec) insert-を使用して、