Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wybierz wszystkie miesiące w podanym zakresie dat, w tym te z wartościami 0

Zgadzam się z odpowiedzią Lievena, stwórz tabelę zawierającą wszystkie miesiące, których mógłbyś kiedykolwiek potrzebować, i użyj jej, aby „DOŁĄCZYĆ W LEWO” do tabeli wyników. Pamiętaj, że jest to naprawdę mała tabela, tylko 365(i) wierszy na rok danych, które masz... I możesz łatwo napisać kod, aby wstępnie wypełnić tę tabelę

Robimy to tutaj i daje to wiele korzyści, na przykład wyobraź sobie miesięczną tabelę danych z następującymi polami (i innymi, jakie możesz wymyślić!) w pełni wypełnioną dla wszystkich miesięcy w danym zakresie;

  • Data (np. 2009-04-01)
  • Dzień (np. 1)
  • Dzień tygodnia (np. środa)
  • Miesiąc (np. 4)
  • Rok (np. 2009)
  • Rok finansowy (np. 2009/10)
  • Kwartał finansowy (np. I kwartał 2009 r.
  • Kwartał kalendarzowy (np. 2009Q2)

Następnie połącz to z powyższym zapytaniem w następujący sposób;

SELECT `DT`.`myYear`, `DT`.`myMonth`, 
           AVG(`myTable`.`value1`) as avg_value_1, 
           AVG(`myTable`.`value2`) as avg_value_2

FROM `dateTable` as DT
LEFT JOIN `myTable`
    ON `dateTable`.`myDate` = `myTable`.`save_date`

WHERE `dateTable`.`myDate` BETWEEN '2009-01-01' AND '2009-07-01'

GROUP BY `DT`.`myYear`, `DT`.`myMonth`

W moim kodzie SQL mogą występować błędy, ponieważ nie byłem w stanie utworzyć tabel testowych, ale mam nadzieję, że zdobędziesz zasadę i zmienisz ją zgodnie z własnymi potrzebami!

Korzystając z tego, możesz zmienić swoją klauzulę „GROUP BY” na dowolną z tabeli „dateTable”, która umożliwia łatwe raportowanie według kwartału finansowego, miesiąca, dnia, dnia tygodnia itp.

Mam nadzieję, że to pomoże!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP MySQL Google Chart JSON — kompletny przykład

  2. Jak działa funkcja OCT() w MySQL

  3. Ładowanie klasy com.mysql.jdbc.Driver ... jest przestarzałym komunikatem

  4. Zapytanie SQL wielu wartości w jednej komórce

  5. Konfigurowanie Django do korzystania z MySQL