sql >> Databáze >  >> RDS >> Mysql

Dotaz MySQL pro získání počtu za hodinu

můžete to vyřešit vytvořením tabulky, která bude obsahovat 24 hodnot pro hodiny (00:00, 01:00 atd.) a provést levé (nebo pravé) spojení s ní a vaší tabulkou povolující nuly, takže budete mít všech 24 řádků, i když vaše tabulka obsahuje vůbec 0 řádků, pak by seskupení podle mělo fungovat dobře.

Nezapomeňte zkrátit vše kromě hodiny z vašeho stolu, když provádíte připojení, takže výsledkem funkce můžete zavolat a provést join on může být rovna hodnotě této tabulky nápovědy.

můžete použít následující dotaz k provedení úlohy po naplnění tabulky testtime 24 hodnotami 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

To poskytne 0 jako počet, pokud neexistují žádné hodnoty odpovídající řádku z testovací tabulky, zatímco funkce count(*) poskytne 24 řádků s 1s namísto 0, i když je vaše tabulka prázdná, také pokud je v tabulce pouze 1 řádek. není možné rozlišit rozdíl mezi 0 řádky, protože výsledky budou vypadat stejně pro následující 2 různé řádky

protože oba poskytují stejný počet výsledných řádků rovný 1, zatímco technika součtu zachází s těmito řádky odlišně



  1. Nomenklatura a architektura produktů IRI

  2. Jak optimalizovat mysql dotaz získávání kategorií a podkategorií

  3. Více příkazů INSERT vs. jeden příkaz INSERT s více VALUES

  4. Dotaz na porovnání dat v SQL