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

MySQL-forespørgsel for at få optælling pr. time

du kan løse dette ved at oprette en tabel, der vil indeholde 24 værdier i timer (00:00, 01:00 osv.) og udføre en venstre (eller højre) joinforbindelse med den og din tabel, der tillader nuller, så du vil have alle 24 rækker, selvom din tabel indeholder 0 rækker overhovedet, og grupper efter burde fungere fint.

Glem ikke at afkorte alt undtagen time fra dit bord, når du udfører join, så resultatet af func du ringer og udfører join on kan være lig med værdien af ​​denne hjælpetabel.

du kan bruge følgende forespørgsel til at udføre jobbet efter at have udfyldt testtidstabellen med 24 test_time-værdier

select test_time,sum(sign(coalesce(idFromYourTable,0))) as count from testtime 
left join yourTable on test_time=hour(yourTableTime) 
group by test_time

Dette vil give 0 som tæller, hvis der ikke er nogen værdier, der matcher rækken fra testtabel, mens at have count(*) vil give 24 rækker med 1'ere i stedet for 0'ere, selvom din tabel er tom, også hvis der kun er 1 række i din tabel er umuligt at skelne mellem 0 rækker, fordi resultaterne vil se ens ud for at følge 2 forskellige rækker

årsag vil begge give samme resultat rækkeantal lig med 1 , mens sumteknikken behandler disse rækker forskelligt



  1. Flere dropdown-værdier, der indsættes i en enkelt række, ikke i flere rækker

  2. MYSQL PHP Advarsel:mysql_query() forventer, at parameter 1 er streng

  3. SQL Server Database Snapshots -3

  4. 5 fordele at nyde, når du opgraderer din database