AliChemicali
Legacy Member
Hallo!
Ik heb een database in de vorm van een scherm schema met 1 fact table en verschillende dimensie tables.
De vraag is: " Geef de 5 drukst-bezette weken van een jaar per instelling."
Dus ik zit met het probleem, ik kan alle weken weergeven en de week nr's en de count.
Code:
Output:
Als ik dit alles in een union zet is het resultaat goed maar de code is niet proper genoeg denk ik.
Dus wat ik zou moeten hebben is dat hij via sql de 7 ziekenhuis_id's overloopt en deze dan invult in f.ziekenhuis_id en daarvan de top 5 values pakt.
Ik weet dat dit via een procedure veel makkelijker is maar het moet via SQL.
Als ik het handmatig via SQL doe heb ik de volgende code:
Dank u aan iedereen die kan helpen.
Mvg,
Vincent!
Ik heb een database in de vorm van een scherm schema met 1 fact table en verschillende dimensie tables.
De vraag is: " Geef de 5 drukst-bezette weken van een jaar per instelling."
Dus ik zit met het probleem, ik kan alle weken weergeven en de week nr's en de count.
Code:
Code:
select z.roepnaam,k.week_nr,count(f.ligdag_id) from feit_ligdag f , dim_kalender k, dim_ziekenhuis z
where f.kalender_id = k.kalender_id and z.ziekenhuis_id = f.ziekenhuis_id
group by z.roepnaam, k.week_nr
order by 1,3 desc
Output:
Code:
ROEPNAAM WEEK_NR COUNT(F.LIGDAG_ID)
-------------------------------------------------- ---------------------- ----------------------
De Kaap 6 236
De Kaap 7 234
De Kaap 13 231
De Kaap 8 229
De Kaap 18 228
De Kaap 11 225
De Kaap 10 225
De Kaap 15 224
De Kaap 5 224
De Kaap 33 224
De Kaap 9 223
De Kaap 12 223
De Kaap 24 222
De Kaap 20 222
De Kaap 16 220
De Kaap 17 220
De Kaap 32 220
De Kaap 4 219
De Kaap 19 219
De Kaap 26 218
De Kaap 31 218
De Kaap 27 216
De Kaap 52 139
De Kaap 44 137
De Kaap 43 136
De Kaap 53 39
De Korbeel 30 225
De Korbeel 32 224
De Korbeel 26 224
De Korbeel 25 224
De Korbeel 20 224
De Korbeel 33 223
De Korbeel 6 222
De Korbeel 28 222
De Korbeel 27 221
De Korbeel 31 219
De Korbeel 24 219
De Korbeel 21 218
De Korbeel 29 218
De Korbeel 23 217
De Korbeel 22 217
De Korbeel 19 217
De Korbeel 7 216
De Korbeel 5 214
De Korbeel 34 214
De Korbeel 40 212
De Korbeel 4 211
De Korbeel 47 210
De Korbeel 43 208
De Korbeel 11 207
De Korbeel 42 207
De Korbeel 10 206
De Korbeel 45 205
De Korbeel 41 205
De Korbeel 12 205
De Korbeel 18 205
De Korbeel 46 205
De Korbeel 52 204
De Korbeel 16 204
De Korbeel 51 203
De Korbeel 8 202
De Korbeel 9 202
De Korbeel 15 202
De Korbeel 3 201
De Korbeel 39 200
De Korbeel 17 199
De Korbeel 44 198
De Korbeel 35 179
De Korbeel 37 178
De Korbeel 36 161
De Korbeel 53 59
Lucas/Jozef 26 170
Lucas/Jozef 25 170
Lucas/Jozef 10 168
Lucas/Jozef 39 165
Lucas/Jozef 22 164
Lucas/Jozef 50 163
Lucas/Jozef 51 162
Lucas/Jozef 23 162
Lucas/Jozef 6 160
Lucas/Jozef 44 160
Lucas/Jozef 49 160
Lucas/Jozef 13 158
Lucas/Jozef 24 158
Lucas/Jozef 12 157
Lucas/Jozef 41 155
Lucas/Jozef 11 155
Lucas/Jozef 18 154
Lucas/Jozef 43 154
Lucas/Jozef 2 154
Lucas/Jozef 40 152
Lucas/Jozef 52 151
Lucas/Jozef 19 149
Lucas/Jozef 38 148
Lucas/Jozef 5 148
Lucas/Jozef 16 148
Lucas/Jozef 21 148
Lucas/Jozef 4 148
Lucas/Jozef 14 147
Lucas/Jozef 47 147
Lucas/Jozef 1 147
Lucas/Jozef 17 145
Lucas/Jozef 34 111
Lucas/Jozef 35 111
Lucas/Jozef 33 105
Lucas/Jozef 29 95
Lucas/Jozef 32 85
Lucas/Jozef 30 83
Lucas/Jozef 31 82
Lucas/Jozef 53 42
Sancta-Maria 23 172
Sancta-Maria 40 167
Sancta-Maria 41 166
Sancta-Maria 22 164
Sancta-Maria 45 162
Sancta-Maria 39 146
Sancta-Maria 43 146
Sancta-Maria 49 143
Sancta-Maria 16 143
Sancta-Maria 37 142
Sancta-Maria 47 142
Sancta-Maria 26 140
Sancta-Maria 15 140
Sancta-Maria 38 139
Sancta-Maria 18 138
Sancta-Maria 14 138
Sancta-Maria 52 137
Sancta-Maria 10 135
Sancta-Maria 5 112
Sancta-Maria 7 112
Sancta-Maria 6 107
Sancta-Maria 1 106
Sancta-Maria 8 100
Sancta-Maria 53 38
Sint-Jozef/Bilzen 17 200
Sint-Jozef/Bilzen 18 199
Sint-Jozef/Bilzen 38 197
Sint-Jozef/Bilzen 50 173
Sint-Jozef/Bilzen 40 172
Sint-Jozef/Bilzen 47 171
Sint-Jozef/Bilzen 42 170
Sint-Jozef/Bilzen 46 170
Sint-Jozef/Bilzen 36 169
Sint-Jozef/Bilzen 43 169
Sint-Jozef/Bilzen 41 168
Sint-Jozef/Bilzen 26 166
Sint-Jozef/Bilzen 45 165
Sint-Jozef/Bilzen 30 163
Sint-Jozef/Bilzen 34 163
Sint-Jozef/Bilzen 33 161
Sint-Jozef/Bilzen 32 160
Sint-Jozef/Bilzen 29 160
Sint-Jozef/Bilzen 51 159
Sint-Jozef/Pittem 32 127
Sint-Jozef/Pittem 1 125
Sint-Jozef/Pittem 30 124
Sint-Jozef/Pittem 40 121
Sint-Jozef/Pittem 26 120
Sint-Jozef/Pittem 34 120
Sint-Jozef/Pittem 31 120
Sint-Jozef/Pittem 24 117
Sint-Jozef/Pittem 35 116
Sint-Jozef/Pittem 29 115
Sint-Jozef/Pittem 36 109
Sint-Jozef/Pittem 39 108
Sint-Jozef/Pittem 25 107
Sint-Jozef/Pittem 27 106
Sint-Jozef/Pittem 28 104
Sint-Jozef/Pittem 37 97
Sint-Jozef/Pittem 38 93
Sint-Jozef/Pittem 53 44
UC Sint-Jozef 50 444
UC Sint-Jozef 51 442
UC Sint-Jozef 49 435
UC Sint-Jozef 48 433
UC Sint-Jozef 52 427
UC Sint-Jozef 47 427
UC Sint-Jozef 46 409
UC Sint-Jozef 44 409
UC Sint-Jozef 45 400
UC Sint-Jozef 43 383
UC Sint-Jozef 42 368
UC Sint-Jozef 25 367
UC Sint-Jozef 33 365
UC Sint-Jozef 41 365
UC Sint-Jozef 24 365
UC Sint-Jozef 40 364
UC Sint-Jozef 32 364
UC Sint-Jozef 31 361
UC Sint-Jozef 30 361
UC Sint-Jozef 28 358
UC Sint-Jozef 21 358
UC Sint-Jozef 23 357
UC Sint-Jozef 22 356
UC Sint-Jozef 34 356
UC Sint-Jozef 29 355
UC Sint-Jozef 20 354
UC Sint-Jozef 27 352
UC Sint-Jozef 26 343
UC Sint-Jozef 39 342
UC Sint-Jozef 19 342
UC Sint-Jozef 18 339
UC Sint-Jozef 38 338
UC Sint-Jozef 17 325
UC Sint-Jozef 35 321
371 rows selected
Als ik dit alles in een union zet is het resultaat goed maar de code is niet proper genoeg denk ik.
Dus wat ik zou moeten hebben is dat hij via sql de 7 ziekenhuis_id's overloopt en deze dan invult in f.ziekenhuis_id en daarvan de top 5 values pakt.
Ik weet dat dit via een procedure veel makkelijker is maar het moet via SQL.
Als ik het handmatig via SQL doe heb ik de volgende code:
Code:
select * from (
select z.roepnaam,k.week_nr,count(f.ligdag_id) from feit_ligdag f , dim_kalender k, dim_ziekenhuis z
where f.kalender_id = k.kalender_id and f.ziekenhuis_id = 1 and z.ziekenhuis_id = f.ziekenhuis_id
group by z.roepnaam, k.week_nr
order by 1,3 desc)
where rownum <= 5
union all
select * from (
select z.roepnaam,k.week_nr,count(f.ligdag_id) from feit_ligdag f , dim_kalender k, dim_ziekenhuis z
where f.kalender_id = k.kalender_id and f.ziekenhuis_id = 2 and z.ziekenhuis_id = f.ziekenhuis_id
group by z.roepnaam, k.week_nr
order by 1,3 desc)
where rownum <= 5
union all
select * from (
select z.roepnaam,k.week_nr,count(f.ligdag_id) from feit_ligdag f , dim_kalender k, dim_ziekenhuis z
where f.kalender_id = k.kalender_id and f.ziekenhuis_id = 3 and z.ziekenhuis_id = f.ziekenhuis_id
group by z.roepnaam, k.week_nr
order by 1,3 desc)
where rownum <= 5
Dank u aan iedereen die kan helpen.
Mvg,
Vincent!