Programim dhe zhvillim, javascript, python, php, html

SQL ORACLE Grupimi sipas të gjitha ditëve në një muaj

Unë kam një tabelë ku ka dy kolona. Njëra kolonë është një vulë kohore dhe tjetra është sasia e orëve të punës.

Më duhet të marr një tabelë tjetër mujore, me dy kolona. Njëra duhet të jetë dita e muajit, dhe tjetra shuma (puna) në atë ditë.

Është e lehtë e di, por problemi është se kur ka një ditë pa punë, ai rresht nuk shfaqet. Më duhet ai rresht, me numrin e ditës dhe një zero si shumë (punë)

Faleminderit për ndihmën tuaj

tabela që marr tani është

day  labor
1      8
2      4
3      7
4      3
6      7
7      9

dhe vazhdo...

siç mund ta shihni, dita e 5-të nuk shfaqet sepse kjo ditë nuk ka punë

Më duhet një ditë për t'u dukur si...5, Punë 0

16.04.2015

  • A mund të jepni disa të dhëna mostër dhe rezultate të pritshme? 16.04.2015
  • Dëshironi ta bëni vetëm duke përdorur sql apo mund të përdorni edhe pl/sql? 16.04.2015
  • Nuk mund të përdor pl/sql Guneli, faleminderit 16.04.2015

Përgjigjet:


1

Para së gjithash, duhet të gjeneroni diapazonin e datave (për shembull midis 2014 dhe 2015) dhe më pas left join statistikat tuaja të punës, shembulli skematik:

--generating days
WITH days AS
 (SELECT DATE '2014-01-01' + LEVEL - 1 day1
    FROM dual
  CONNECT BY LEVEL <= DATE '2015-01-01' - DATE '2014-01-01')

SELECT day.day1, NVL(sum(labor.labor),0) labot_sum FROM days
LEFT JOIN labor ON trunc(labor.timestamp_col) = days.day1
GROUP BY days.day1

EDITO

Nëse keni ditë me numër të plotë, krijimi duhet të duket si

SELECT LEVEL day1 FROM dual CONNECT BY LEVEL <= 365
16.04.2015
  • E vetmja gjë që do të shtoja është përdorimi i SUM(COALESCE(labor.labor, 0)) në mënyrë që zero orë të kthehen për ditë pa punë siç kërkoi OP. Dhe unë mendoj se ju dëshironi WITH days AS në vend të WITH days OF YEAR 16.04.2015
  • por më duhet vetëm një muaj çdo herë. Unë mund të zgjedh vetëm këtë gamë 16.04.2015
  • @Madmartigan, kështu që duhet të caktoni intervalin e muajve 16.04.2015
  • E shkëlqyeshme! @Madmartigan nëse teksti im ju ndihmon, a mund ta pranoni përgjigjen? ;) Faleminderit! 16.04.2015
  • Unë kam një problem tjetër me këtë problem. Tani kam një kolonë tjetër në tabelën e burimit që tregon zonën (është një numër 1,2,3,4,5,6). Më duhet të grupoj punën në zona dhe ditë. Kur e bëj këtë, ditët pa punë nuk shfaqen. 22.04.2015
  • @Madmartigan mund të CROSS JOIN tabelën e zonave të gjeneruara në pyetje dhe të shtoni zonën në LEFT JOIN kushtin e punës 23.04.2015
  • Faleminderit @agent5566, por nuk e kuptoj. Mund ta shpjegoni pak më shumë?, do të jem shumë mirënjohës. Faleminderit perseri. 23.04.2015
  • diçka si kjo with days as (SELECT LEVEL day1 FROM dual CONNECT BY LEVEL <= 365), zones AS (SELECT LEVEL ZONE FROM dual CONNECT BY LEVEL <= 5) SELECT days.day1, z.zone, NVL(sum(labor.labor),0) labot_sum FROM days CROSS JOIN zones Z LEFT JOIN labor ON trunc(labor.timestamp_col) = days.day1 AND z.zone = labor.zone GROUP BY days.day1,z.zone 23.04.2015
  • Epo, aspak...kur grupoj sipas ditës është në rregull, por nëse grupoj sipas zonës, përmbledh vetëm ditën e parë në secilën zonë. 23.04.2015
  • SELECT z.zona, NVL(sum(LABH),0) AS LABH NGA ditët CROSS JOIN zones Z lanë JOIN mega ON MEGA.fecha = days.day1 AND z.zona = grupi mega.zona nga z.zona RENDIT BY zona ASC 23.04.2015
  • Nuk mundem, ndoshta mund të jetë për pyetjen time të orakullit 23.04.2015
  • nuk di si të përdor sqlfiddle.com. Na vjen keq 23.04.2015
  • E mora @agent5566. Unë kam bërë një nën-zgjedhje për shumën. 23.04.2015
  • Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..