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

filestatusごとに最後の行の総数を表示するにはどうすればよいですか?

    相関サブクエリを使用する:

    SELECT COUNT(DISTINCT f_bankid) AS tcount
    FROM tbl_fileStatus t
    WHERE ? = (SELECT f_filestatus FROM tbl_fileStatus WHERE f_bankid = t.f_bankid ORDER BY f_id DESC LIMIT 1)
    

    ?を置き換えます f_bankidを使用
    デモ を参照してください。 。

    MySql 8.0以降では、FIRST_VALUE()を使用できます ウィンドウ関数:

    SELECT COUNT(*) AS tcount
    FROM (
      SELECT DISTINCT f_bankid, 
             FIRST_VALUE(f_filestatus) OVER (PARTITION BY f_bankid ORDER BY f_id DESC) f_filestatus
      FROM tbl_fileStatus
    ) t
    WHERE f_filestatus = ?
    

    デモ を参照してください。 。

    すべてのf_filestatusの結果が必要な場合 1行で:

    SELECT
      SUM(f_filestatus = 1) AS tcount1,
      SUM(f_filestatus = 2) AS tcount2,
      SUM(f_filestatus = 3) AS tcount3
    FROM (
      SELECT t.f_bankid, t.f_filestatus
      FROM tbl_fileStatus t
      WHERE t.f_id = (SELECT f_id FROM tbl_fileStatus WHERE f_bankid = t.f_bankid ORDER BY f_id DESC LIMIT 1)
    ) t
    

    デモ を参照してください。 。
    結果:

    > tcount1 | tcount2 | tcount3
    > ------: | ------: | ------:
    >       0 |       1 |       2
    


    1. PostgreSQL:警告:コンソールコードページ(437)はWindowsコードページ(1252)とは異なります

    2. PostgreSQLサーバーに接続できません:サーバーに接続できませんでした:アクセスが拒否されました

    3. データベースでのユーザーアクセスを制限することが重要な理由

    4. mysqli_query()は、少なくとも2つのパラメーターを想定しています。1つは?