sql >> Database >  >> RDS >> Mysql

mysql-datumlijst met telling, zelfs als er geen gegevens zijn op een specifieke datum

Uitgaande van uw postid s aangrenzend zijn in uw tabel, dan is deze vraag:

SELECT
  DATE_FORMAT(b.date, '%Y-%m-%d') date,
  COUNT(c.postid)
FROM
(
  SELECT
    (SELECT MAX(date) FROM ex) + INTERVAL 3 DAY - INTERVAL a.postid DAY AS date
  FROM
    ex a
) b
LEFT JOIN
  ex c ON c.date = b.date
GROUP BY
  b.date
ORDER BY
  b.date

produceert:

date    COUNT(c.postid)
2012-01-01  2
2012-01-02  2
2012-01-03  0
2012-01-04  2
2012-01-05  1
2012-01-06  0
2012-01-07  0

Zie http://sqlfiddle.com/#!2/2cf8d/2

Als uw postid s niet aaneengesloten zijn, kunt u een ids . gebruiken tabel met aaneengesloten ID's:

SELECT
  DATE_FORMAT(b.date, '%Y-%m-%d') date,
  COUNT(c.postid)
FROM
(
  SELECT
    (SELECT MAX(date) FROM ex) + INTERVAL 3 DAY - INTERVAL a.id DAY AS date
  FROM
    ids a
) b
LEFT JOIN
  ex c ON c.date = b.date
GROUP BY
  b.date
ORDER BY
  b.date DESC
LIMIT 7

Zie http://sqlfiddle.com/#!2/13035/1



  1. GROUP BY retourneer het eerste record

  2. PostgreSQL:hoe geef ik parameters door vanaf de opdrachtregel?

  3. Barman gebruiken voor PostgreSQL Disaster Recovery

  4. Is het mogelijk om parameters voor de tabel- of kolomnaam op te geven in Prepared Statements of QueryRunner.update()?