Próbuję wykonać wykres, w którym oś X jest data (ostatnie 14 dni), a sama wykres pokazuje liczbę po tej dacie. Jednak zaczyna się od 1 października -> 9. OCT, a następnie wpływa z 25. Sep -> 30.SEP

Mój SQL:

SELECT DATE_FORMAT(created_at, "%d. %b") AS date, count(*) as count 
FROM posts
WHERE created_at BETWEEN NOW() - INTERVAL 14 DAY AND NOW()
Group by date
ORDER BY date ASC

Wizerunek wydania: https://i.imgur.com/d8airu6.png

-1
CunnertA 9 październik 2020, 18:34

1 odpowiedź

Najlepsza odpowiedź

Problem polega na tym, że date w klauzuli order by odnosi się do aliasu zdefiniowanego w klauzuli select, czyli reprezentację smyczkową daty. Nie możesz użyć tego do sortowania zestawu, ile chcesz.

Oto jedno obejście: Dodaj kolejną ekspresję do klauzuli group by, która ma Dataxy date - możesz użyć go, aby zamówić wyniki:

SELECT date_format(created_at, '%d. %b') AS date, count(*) as count 
FROM posts
WHERE created_at BETWEEN NOW() - INTERVAL 14 DAY AND NOW()
Group by date, date(created_at)
ORDER BY date(created_at) ASC
1
GMB 9 październik 2020, 15:36