Tarih aralığına dayalı SQL sorgusunu gruplamak için sıfır sayımı dahil et

0

Soru

Her gün yapılan satış sayısını tek bir 'satış' tablosundan gruplandırmaya ve sipariş etmeye çalışıyorum. created_at sütun ve bir id sütun. Kayıtların her biri gün boyunca herhangi bir zamanda oluşturulabilir. Bunu aşağıdaki sorgu ile yapmayı başardım:

SELECT date_trunc('day', created_at::date) AS period, COUNT(id)
FROM sales
GROUP BY period
ORDER BY period

Ancak, 0 satışları olan günler gösterilmez. Herhangi bir fikir? Bulduğum cevapların çoğu LEFT JOIN kullanıyor ancak işe yaramıyor gibi görünüyor, bu yüzden nasıl kullanılacağını yanlış anlıyor gibi görünebilirim. :(

Şimdiden teşekkür ederim.

group-by left-join sql
2021-11-17 18:12:10
1

En iyi cevabı

0

Gerekli tarihleri döndüren geçici bir tablo oluşturun ve ona katılın

DECLARE @StartDateTime DATETIME
DECLARE @EndDateTime DATETIME

SET @StartDateTime = '2015-01-01'
SET @EndDateTime = '2015-01-12';

WITH DateRange(DateData) AS 
(
    SELECT @StartDateTime as Date
    UNION ALL
    SELECT DATEADD(d,1,DateData)
    FROM DateRange 
    WHERE DateData < @EndDateTime
)

SELECT DateRange.DateData, Count(sales.id)
  FROM sales
  right join DateRange on sales.date = DateRange.DateData
  group by DateRange.DateData

OPTION (MAXRECURSION 0)
2021-11-17 18:51:39

Teşekkürler. Bunu deneyeceğim, ancak geçici bir tablo oluşturmadan bunu yapmanın bir yolu olup olmadığını merak ediyorum?
RDW

Merhaba RDW, başka bir yol olduğunu sanmıyorum
Rami Bancosly

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................