0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 CREATE TABLE CASE_TBL (
0012 i integer,
0013 f double
0014 ) USING parquet;
0015
0016 CREATE TABLE CASE2_TBL (
0017 i integer,
0018 j integer
0019 ) USING parquet;
0020
0021 INSERT INTO CASE_TBL VALUES (1, 10.1);
0022 INSERT INTO CASE_TBL VALUES (2, 20.2);
0023 INSERT INTO CASE_TBL VALUES (3, -30.3);
0024 INSERT INTO CASE_TBL VALUES (4, NULL);
0025
0026 INSERT INTO CASE2_TBL VALUES (1, -1);
0027 INSERT INTO CASE2_TBL VALUES (2, -2);
0028 INSERT INTO CASE2_TBL VALUES (3, -3);
0029 INSERT INTO CASE2_TBL VALUES (2, -4);
0030 INSERT INTO CASE2_TBL VALUES (1, NULL);
0031 INSERT INTO CASE2_TBL VALUES (NULL, -6);
0032
0033
0034
0035
0036
0037 SELECT '3' AS `One`,
0038 CASE
0039 WHEN udf(1 < 2) THEN 3
0040 END AS `Simple WHEN`;
0041
0042 SELECT '<NULL>' AS `One`,
0043 CASE
0044 WHEN 1 > 2 THEN udf(3)
0045 END AS `Simple default`;
0046
0047 SELECT '3' AS `One`,
0048 CASE
0049 WHEN udf(1) < 2 THEN udf(3)
0050 ELSE udf(4)
0051 END AS `Simple ELSE`;
0052
0053 SELECT udf('4') AS `One`,
0054 CASE
0055 WHEN 1 > 2 THEN 3
0056 ELSE 4
0057 END AS `ELSE default`;
0058
0059 SELECT udf('6') AS `One`,
0060 CASE
0061 WHEN udf(1 > 2) THEN 3
0062 WHEN udf(4) < 5 THEN 6
0063 ELSE 7
0064 END AS `Two WHEN with default`;
0065
0066 SELECT '7' AS `None`,
0067 CASE WHEN rand() < udf(0) THEN 1
0068 END AS `NULL on no matches`;
0069
0070
0071 SELECT CASE WHEN udf(1=0) THEN 1/0 WHEN 1=1 THEN 1 ELSE 2/0 END;
0072 SELECT CASE 1 WHEN 0 THEN 1/udf(0) WHEN 1 THEN 1 ELSE 2/0 END;
0073
0074
0075
0076
0077 SELECT CASE WHEN i > 100 THEN udf(1/0) ELSE udf(0) END FROM case_tbl;
0078
0079
0080 SELECT CASE 'a' WHEN 'a' THEN udf(1) ELSE udf(2) END;
0081
0082
0083
0084
0085
0086 SELECT '' AS `Five`,
0087 CASE
0088 WHEN i >= 3 THEN i
0089 END AS `>= 3 or Null`
0090 FROM CASE_TBL;
0091
0092 SELECT '' AS `Five`,
0093 CASE WHEN i >= 3 THEN (i + i)
0094 ELSE i
0095 END AS `Simplest Math`
0096 FROM CASE_TBL;
0097
0098 SELECT '' AS `Five`, i AS `Value`,
0099 CASE WHEN (i < 0) THEN 'small'
0100 WHEN (i = 0) THEN 'zero'
0101 WHEN (i = 1) THEN 'one'
0102 WHEN (i = 2) THEN 'two'
0103 ELSE 'big'
0104 END AS `Category`
0105 FROM CASE_TBL;
0106
0107 SELECT '' AS `Five`,
0108 CASE WHEN ((i < 0) or (i < 0)) THEN 'small'
0109 WHEN ((i = 0) or (i = 0)) THEN 'zero'
0110 WHEN ((i = 1) or (i = 1)) THEN 'one'
0111 WHEN ((i = 2) or (i = 2)) THEN 'two'
0112 ELSE 'big'
0113 END AS `Category`
0114 FROM CASE_TBL;
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126 SELECT * FROM CASE_TBL WHERE udf(COALESCE(f,i)) = 4;
0127
0128 SELECT * FROM CASE_TBL WHERE udf(NULLIF(f,i)) = 2;
0129
0130 SELECT udf(COALESCE(a.f, b.i, b.j))
0131 FROM CASE_TBL a, CASE2_TBL b;
0132
0133 SELECT *
0134 FROM CASE_TBL a, CASE2_TBL b
0135 WHERE udf(COALESCE(a.f, b.i, b.j)) = 2;
0136
0137 SELECT udf('') AS Five, NULLIF(a.i,b.i) AS `NULLIF(a.i,b.i)`,
0138 NULLIF(b.i, 4) AS `NULLIF(b.i,4)`
0139 FROM CASE_TBL a, CASE2_TBL b;
0140
0141 SELECT '' AS `Two`, *
0142 FROM CASE_TBL a, CASE2_TBL b
0143 WHERE udf(COALESCE(f,b.i) = 2);
0144
0145
0146
0147
0148
0149
0150
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160
0161
0162
0163
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183
0184
0185
0186
0187
0188 SELECT CASE
0189 (CASE vol('bar')
0190 WHEN udf('foo') THEN 'it was foo!'
0191 WHEN udf(vol(null)) THEN 'null input'
0192 WHEN 'bar' THEN 'it was bar!' END
0193 )
0194 WHEN udf('it was foo!') THEN 'foo recognized'
0195 WHEN 'it was bar!' THEN udf('bar recognized')
0196 ELSE 'unrecognized' END AS col;
0197
0198
0199
0200
0201
0202
0203
0204
0205
0206
0207
0208
0209
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225
0226
0227
0228
0229
0230
0231
0232
0233
0234
0235
0236
0237
0238
0239
0240
0241
0242
0243
0244
0245
0246
0247
0248
0249
0250
0251
0252
0253
0254
0255
0256
0257
0258
0259
0260
0261
0262
0263
0264 DROP TABLE CASE_TBL;
0265 DROP TABLE CASE2_TBL;