Ik heb ooit nog eens een query van ongekende lengte (ben er zelf iig wel trots op
)
Het is een query die een totaal laat zien van het aantal coupures, pasmunt en overige waardes(cheques etc) die binnen zijn gekomen in een geld tel centrale van een bank.
Uitgesplitst per coupure soort (tientjes, twintigjes, etc) en valuta)
Het resultaat kon ook zo in z'n geheel in een tabel gegoten worden, zonder verdere opmaak en liet dan evengoed een duidelijk overzicht zien.
Deze query werd afgeschoten op een DB2 server en deed er ongeveer 2 sec. over om met resultaat te komen
Het is een query die een totaal laat zien van het aantal coupures, pasmunt en overige waardes(cheques etc) die binnen zijn gekomen in een geld tel centrale van een bank.
Uitgesplitst per coupure soort (tientjes, twintigjes, etc) en valuta)
Het resultaat kon ook zo in z'n geheel in een tabel gegoten worden, zonder verdere opmaak en liet dan evengoed een duidelijk overzicht zien.
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
| WITH TIMES AS( SELECT MAX(SUB.TIMESTAMP) AS TIME FROM DBORC01.ORCT046 SUB WHERE SUB.TIMESTAMP BETWEEN ? AND ? GROUP BY SUB.DEELSTROOM_ID, SUB.COUPURE_ID ), SUB_TEL AS ( SELECT X.DEELSTROOM_ID AS DEEL_ID, X.DEELSCOUPTEL_ID AS ID, X.COUPURE_ID AS COUP_ID, DEEL.STORTING_ID AS STORT_ID FROM (TIMES T JOIN DBORC01.ORCT046 X ON T.TIME = X.TIMESTAMP JOIN DBORC01.ORCT038 DEEL ON X.DEELSTROOM_ID = DEEL.DEELSTROOM_ID) ), STORT AS ( SELECT STORT_ID AS ID FROM SUB_TEL GROUP BY STORT_ID ) SELECT VALUTA.VAL_ISO_CD AS VALUTA, SUM(DEELCOUPTEL.DEELSCOUPTELANT) AS AANTAL, 'X' AS "X", COUPURE.WAARDE AS COUPURE, COUPURE.PRIORITEIT AS VOLGORDE, '=' AS "=", SUM(DEELCOUPTEL.DEELSCOUPTELANT * COUPURE.WAARDE) AS TOTAAL, INTEGER(SUM(DEELCOUPTEL.DEELSCOUPTELANT)) / INTEGER(COUPURE.BATCHAANTAL) AS AANTALBATCHES, MOD(INTEGER(SUM(DEELCOUPTEL.DEELSCOUPTELANT)), INTEGER(COUPURE.BATCHAANTAL)) AS LOSSECOUPURES FROM SUB_TEL, DBORC01.ORCT046 DEELCOUPTEL, DBORC01.ORCT009 COUPURE, DBORC01.ORCT030 VALUTA, DBORC01.ORCT038 DEELSTR WHERE SUB_TEL.ID = DEELCOUPTEL.DEELSCOUPTEL_ID AND SUB_TEL.COUP_ID = COUPURE.COUPURE_ID AND COUPURE.VALUTA_ID = VALUTA.VALUTA_ID AND DEELCOUPTEL.DEELSTROOM_ID = DEELSTR.DEELSTROOM_ID AND ( SELECT MAX(GETELD_JN) FROM DBORC01.ORCT038 TMP WHERE TMP.STORTING_ID = DEELSTR.STORTING_ID) = 'J' GROUP BY VALUTA.VAL_ISO_CD, COUPURE.WAARDE, COUPURE.PRIORITEIT, COUPURE.BATCHAANTAL UNION SELECT VALUTA.VAL_ISO_CD AS VALUTA, COUNT(DEELSTROOM.GETELD_BEDRAG) AS AANTAL, 'X' AS "X", 0 AS COUPURE, 99 AS VOLGORDE, '=' AS "=", SUM(DEELSTROOM.GETELD_BEDRAG) AS TOTAAL, SUM(0) AS AANTALBATCHES, SUM(0) AS LOSSECOUPURES FROM (DBORC01.ORCT024 STOR JOIN DBORC01.ORCT038 DEELSTROOM ON STOR.STORTING_ID = DEELSTROOM.STORTING_ID JOIN DBORC01.ORCT030 VALUTA ON DEELSTROOM.VALUTA_ID = VALUTA.VALUTA_ID) WHERE STOR.GETELD_TIMESTAMP BETWEEN ? AND ? AND DEELSTROOM.SOORT_DEELST_ID = 2 AND ( SELECT MAX(GETELD_JN) FROM DBORC01.ORCT038 TMP WHERE TMP.STORTING_ID = STOR.STORTING_ID) = 'J' GROUP BY VALUTA.VAL_ISO_CD UNION SELECT VALUTA.VAL_ISO_CD AS VALUTA, COUNT(DEELSTROOM.GETELD_BEDRAG) AS AANTAL, 'X' AS "X", 0 AS COUPURE, 100 AS VOLGORDE, '=' AS "=", SUM(DEELSTROOM.GETELD_BEDRAG) AS TOTAAL, SUM(0) AS AANTALBATCHES, SUM(0) AS LOSSECOUPURES FROM (DBORC01.ORCT024 STOR JOIN DBORC01.ORCT038 DEELSTROOM ON STOR.STORTING_ID = DEELSTROOM.STORTING_ID JOIN DBORC01.ORCT030 VALUTA ON DEELSTROOM.VALUTA_ID = VALUTA.VALUTA_ID) WHERE STOR.GETELD_TIMESTAMP BETWEEN ? AND ? AND DEELSTROOM.SOORT_DEELST_ID = 3 AND ( SELECT MAX(GETELD_JN) FROM DBORC01.ORCT038 TMP WHERE TMP.STORTING_ID = STOR.STORTING_ID) = 'J' GROUP BY VALUTA.VAL_ISO_CD ORDER BY VALUTA, VOLGORDE, COUPURE FOR READ ONLY; |
Deze query werd afgeschoten op een DB2 server en deed er ongeveer 2 sec. over om met resultaat te komen
Neem je whisky mee, is het te weinig... *zucht*