sql >> データベース >  >> RDS >> Mysql

MySQLGroupby-カウントがゼロの列を取得

    COUNTは、Microsoftで見つけたステータスのCOUNTのみを返します。そして、それらは拒否され、Wthdrawnされます。クエリにすべてのステータスをフィードし、それらすべての発生をカウントする必要があります。表示されないものはテーブルに0のままになります:

    SELECT a.STATUS, 
          SUM(CASE 
            WHEN b.STATUS IS NOT NULL
              THEN 1
            ELSE 0
          END) AS StatusCount
    FROM (
      SELECT DISTINCT STATUS
      FROM tab1
      ) a
    LEFT JOIN tab1 b ON a.STATUS = b.STATUS AND b.CompanyName = 'Microsoft'
    GROUP BY a.STATUS;
    

    これは何をしますか:

    SELECT DISTINCT STATUS
    FROM tab1
    

    これにより、可能なすべてのステータスが検出されます。考えられるすべてのステータスを含む参照テーブルがある場合は、このクエリの代わりにそれを使用することをお勧めします。

    次に、ステータスとcompanyNameによって、このテーブルでLEFTJOINを実行します。このように、テーブルにレコードがある場合にのみ、STATUSで一致を取得します。ある場合はSUMに1を追加し、ない場合は0を追加します。

    sqlfiddleデモ



    1. over()とパーティションを理解しようとしています

    2. QMYSQLドライバーのロードエラー

    3. JpaリポジトリでlighEntityバージョンを実装する方法は?

    4. ストアドプロシージャでreturnを使用することはできますか?