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

MySQL集計関数をMySQLIF()関数とどのように組み合わせることができますか?


MySQL集計関数とMySQLIF()関数を組み合わせると、必要な特定の出力を取得するのに非常に役立ちます。 SUM()およびCOUNT()集計関数とIF()関数を組み合わせた次のクエリについて考えてみます。

mysql> Select SUM(IF(Language = 'English', 1, 0)) As English, SUM(IF(Language <> 'English',1,0)) AS "Non-English" from Students;
+---------+-------------+
| English | Non-English |
+---------+-------------+
| 5       | 4           |
+---------+-------------+
1 row in set (0.00 sec)

上記のクエリは、SUM()集計関数とIF()関数を組み合わせて、「Students」テーブルから英語を話す学生と英語を話さない学生の出力を取得します。

mysql> Select COUNT(IF(country = 'USA', 1, NULL))AS USA,
    -> COUNT(IF(country = 'UK', 1, NULL))AS UK,
    -> COUNT(IF(country = 'France', 1, NULL))AS France,
    -> COUNT(IF(country = 'Russia', 1, NULL))AS Russia,
    -> COUNT(IF(country = 'Australia', 1, NULL))AS Australia,
    -> COUNT(IF(country = 'INDIA', 1, NULL))AS INDIA,
    -> COUNT(IF(country = 'NZ', 1, NULL))AS NZ FROM Students;
+-----+----+--------+--------+-----------+-------+----+
| USA | UK | France | Russia | Australia | INDIA | NZ |
+-----+----+--------+--------+-----------+-------+----+
| 2   | 1  | 1      | 1      | 1         | 2     | 1  |
+-----+----+--------+--------+-----------+-------+----+
1 row in set (0.07 sec)

上記のクエリは、COUNT()集計関数とIF()関数を組み合わせて、「Students」テーブルから多数の国の出力を取得します。


  1. テーブルの列でMySQLINTERVAL()関数を使用するにはどうすればよいですか?

    列の名前として最初の引数を指定することにより、テーブルの列でINTERVAL()関数を使用できます。この場合、その列のすべての値がINTERVAL()関数の他の引数として指定された値と比較され、その比較に基づいて結果セットが提供されます。それを理解するために、次のようなemployeeテーブルのデータが使用されます- mysql> Select* from employee568; +----+--------+--------+ | ID | Name   | Salary | +----+--------+--------+ | 1  | Gaurav | 500

  2. MySQLストアド関数を変更するにはどうすればよいですか?

    ALTER ROUTINE権限がある場合は、ALTERFUNCTIONクエリを使用してMySQLストアド関数を変更できます。その構文は次のとおりです- 構文 ALTER FUNCTION function_name [characteristic ...] characteristic:    { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } | COMMENT 'string' ここでfunction_na