SQL sana so'rovi mavjud bo'lmagan kunlarni ko'rsatadi

Men quyidagi muammoga duch kelyapman:

Men 2008 yildan beri har kuni jami yuklab olishlar uchun Postgres ma'lumotlar bazasini so'rashim kerak, masalan

date | downloads 1-1-2008 | 20 3-1-2008 | 10

Haqiqiy muammo shundaki, men har kun uchun har bir yozuvni kiritmayman, lekin yuklab olishlar nolga teng bo'lgan kunlarni ham olishim kerak.

Hozir ishlayotgan yechim 1-1-2008 dan 1-1-2018 gacha bo'lgan har bir sana bilan boshqa jadvalga ega bo'lishdir.

Va har bir sana oralig'iga yo'naltirilgan so'rovda unga qo'shilish ....

bu eng yaxshi yo'lmi?


person Eduardo Oliveira    schedule 01.04.2014    source manba


Javoblar (1)


generate_series jadvaliga right join kiriting

select s.d
from
    downloads d
    right join
    (
        select d::date
        from
        generate_series('2008-01-01', current_date, interval '1 day') s(d)
    ) s on s.d = d.d
person Clodoaldo Neto    schedule 01.04.2014
comment
OK, yechim har doim satic stolga ega bo'lmaslik uchun yanada toza ko'rinadi, bu bir xil yoki eng yomon ishlash emasmi? Siz hali ham jadvallarga qo'shilishingiz to'g'ri bo'lgani uchun va bu yechim bo'yicha har bir so'rov uchun ma'lumotlar yaratilmoqda? - person Eduardo Oliveira; 02.04.2014
comment
@Eduardo Menimcha, fayl tizimidan so'rashdan ko'ra ma'lumotlarni yaratish arzonroq. Bundan tashqari, u juda ham moslashuvchan, chunki u nafaqat ketma-ket kunlarga, balki har qanday tasavvur oralig'iga ham tegishli. - person Clodoaldo Neto; 02.04.2014