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

Jak wypełnić luki dat w MySQL?

Musisz utworzyć tabelę pomocniczą i wypełnić ją wszystkimi datami od start do end , a następnie po prostu LEFT JOIN z tą tabelą:

SELECT  d.dt AS date,
        COUNT(*) AS total,
        SUM(attitude = 'positive') AS positive,
        SUM(attitude = 'neutral') AS neutral,
        SUM(attitude = 'negative') AS negative
FROM    dates d
LEFT JOIN
        messages m
ON      m.posted_at >= d.dt
        AND m.posted_at < d.dt + INTERVAL 1 DAYS
        AND spam = 0
        AND duplicate = 0
        AND ignore = 0
GROUP BY
        d.dt
ORDER BY
        d.dt

Zasadniczo potrzebujesz tutaj fałszywego źródła danych.

MySQL jest jedynym głównym systemem, w którym brakuje sposobu na jego wygenerowanie.

PostgreSQL implementuje specjalną funkcję generate_series aby to zrobić, podczas gdy Oracle i SQL Server może używać rekurencji (CONNECT BY i rekurencyjne CTE s, odpowiednio).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Próba uzyskania własności nie-obiektowej - CodeIgniter

  2. Python MySQL — SELECTy działają, ale nie DELETE?

  3. Wyszukiwanie PHP Mysql między dwiema datami

  4. Awaria usługi XAMPP MySQL po ponownym uruchomieniu

  5. Data i godzina za godzinę po wstawieniu. Czas letni