Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL заявка за получаване на брой на час

можете да разрешите това, като създадете таблица, която ще съдържа 24 стойности за часове (00:00, 01:00 и т.н.) и извършите ляво (или дясно) присъединяване с нея и вашата таблица позволява нулеви стойности, така че ще имате всичките 24 реда, дори ако вашата таблица изобщо съдържа 0 реда, след което групирането по трябва да работи добре.

Не забравяйте да съкратите всичко освен час от вашата маса, когато изпълнявате присъединяване, така че в резултат на func извиквате и изпълнявате join on може да бъде равно на стойността на тази помощна таблица.

можете да използвате следната заявка, за да свършите работата, след като попълните таблицата на testtime с 24 стойности на test_time

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

Това ще осигури 0 като брой, ако няма стойности, съответстващи на ред от тестовата таблица, докато наличието на count(*) ще осигури 24 реда с 1s вместо 0s, дори ако таблицата ви е празна, също и ако има само 1 ред във вашата таблица е невъзможно да се разграничи разликата между 0 реда, защото резултатите ще изглеждат еднакви за следващите 2 различни реда

причината и двете ще предоставят еднакъв брой редове за резултат, равен на 1, докато техниката на сумиране третира тези редове по различен начин



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Припокриващи се дати на MySQL, няма конфликт

  2. Използване на utf8mb4 с php и mysql

  3. Как най-добре да проектирате REST API с множество филтри?

  4. Не мога да намеря модул `mysql` node.js

  5. Съхранение на множество данни в квадратчетата за отметка в MySQL база данни с PHP