sql >> Database teknologi >  >> RDS >> Mysql

Hvordan viser man det samlede antal af den sidste række efter filstatus?

Brug en korreleret underforespørgsel:

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)
 

Erstat ? med f_bankid du søger efter.
Se demoen .

I MySql 8.0+ kan du bruge FIRST_VALUE() vinduesfunktion:

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 = ?
 

Se demoen .

Hvis du vil have resultater for alle f_filestatus i 1 række:

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
 

Se demoen .
Resultater:

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

  1. PostgreSQL langsom på et stort bord med arrays og masser af opdateringer

  2. Databasen kan ikke åbnes, fordi den er version 782. Denne server understøtter version 706 og tidligere. En nedgraderingssti understøttes ikke

  3. MariaDB JSON_EXISTS() Forklaret

  4. ORA-16789:Standby-redo-logfiler konfigureret forkert