0001
0002
0003 CREATE OR REPLACE TEMPORARY VIEW p AS VALUES (1, 1) AS T(pk, pv);
0004 CREATE OR REPLACE TEMPORARY VIEW c AS VALUES (1, 1) AS T(ck, cv);
0005
0006
0007 SELECT pk, cv
0008 FROM p, c
0009 WHERE p.pk = c.ck
0010 AND c.cv = (SELECT avg(c1.cv)
0011 FROM c c1
0012 WHERE c1.ck = p.pk);
0013
0014
0015 SELECT pk, cv
0016 FROM p, c
0017 WHERE p.pk = c.ck
0018 AND c.cv = (SELECT max(avg)
0019 FROM (SELECT c1.cv, avg(c1.cv) avg
0020 FROM c c1
0021 WHERE c1.ck = p.pk
0022 GROUP BY c1.cv));
0023
0024 create temporary view t1 as select * from values
0025 ('val1a', 6S, 8, 10L, float(15.0), 20D, 20E2BD, timestamp '2014-04-04 00:00:00.000', date '2014-04-04'),
0026 ('val1b', 8S, 16, 19L, float(17.0), 25D, 26E2BD, timestamp '2014-05-04 01:01:00.000', date '2014-05-04'),
0027 ('val1a', 16S, 12, 21L, float(15.0), 20D, 20E2BD, timestamp '2014-06-04 01:02:00.001', date '2014-06-04'),
0028 ('val1a', 16S, 12, 10L, float(15.0), 20D, 20E2BD, timestamp '2014-07-04 01:01:00.000', date '2014-07-04'),
0029 ('val1c', 8S, 16, 19L, float(17.0), 25D, 26E2BD, timestamp '2014-05-04 01:02:00.001', date '2014-05-05'),
0030 ('val1d', null, 16, 22L, float(17.0), 25D, 26E2BD, timestamp '2014-06-04 01:01:00.000', null),
0031 ('val1d', null, 16, 19L, float(17.0), 25D, 26E2BD, timestamp '2014-07-04 01:02:00.001', null),
0032 ('val1e', 10S, null, 25L, float(17.0), 25D, 26E2BD, timestamp '2014-08-04 01:01:00.000', date '2014-08-04'),
0033 ('val1e', 10S, null, 19L, float(17.0), 25D, 26E2BD, timestamp '2014-09-04 01:02:00.001', date '2014-09-04'),
0034 ('val1d', 10S, null, 12L, float(17.0), 25D, 26E2BD, timestamp '2015-05-04 01:01:00.000', date '2015-05-04'),
0035 ('val1a', 6S, 8, 10L, float(15.0), 20D, 20E2BD, timestamp '2014-04-04 01:02:00.001', date '2014-04-04'),
0036 ('val1e', 10S, null, 19L, float(17.0), 25D, 26E2BD, timestamp '2014-05-04 01:01:00.000', date '2014-05-04')
0037 as t1(t1a, t1b, t1c, t1d, t1e, t1f, t1g, t1h, t1i);
0038
0039 create temporary view t2 as select * from values
0040 ('val2a', 6S, 12, 14L, float(15), 20D, 20E2BD, timestamp '2014-04-04 01:01:00.000', date '2014-04-04'),
0041 ('val1b', 10S, 12, 19L, float(17), 25D, 26E2BD, timestamp '2014-05-04 01:01:00.000', date '2014-05-04'),
0042 ('val1b', 8S, 16, 119L, float(17), 25D, 26E2BD, timestamp '2015-05-04 01:01:00.000', date '2015-05-04'),
0043 ('val1c', 12S, 16, 219L, float(17), 25D, 26E2BD, timestamp '2016-05-04 01:01:00.000', date '2016-05-04'),
0044 ('val1b', null, 16, 319L, float(17), 25D, 26E2BD, timestamp '2017-05-04 01:01:00.000', null),
0045 ('val2e', 8S, null, 419L, float(17), 25D, 26E2BD, timestamp '2014-06-04 01:01:00.000', date '2014-06-04'),
0046 ('val1f', 19S, null, 519L, float(17), 25D, 26E2BD, timestamp '2014-05-04 01:01:00.000', date '2014-05-04'),
0047 ('val1b', 10S, 12, 19L, float(17), 25D, 26E2BD, timestamp '2014-06-04 01:01:00.000', date '2014-06-04'),
0048 ('val1b', 8S, 16, 19L, float(17), 25D, 26E2BD, timestamp '2014-07-04 01:01:00.000', date '2014-07-04'),
0049 ('val1c', 12S, 16, 19L, float(17), 25D, 26E2BD, timestamp '2014-08-04 01:01:00.000', date '2014-08-05'),
0050 ('val1e', 8S, null, 19L, float(17), 25D, 26E2BD, timestamp '2014-09-04 01:01:00.000', date '2014-09-04'),
0051 ('val1f', 19S, null, 19L, float(17), 25D, 26E2BD, timestamp '2014-10-04 01:01:00.000', date '2014-10-04'),
0052 ('val1b', null, 16, 19L, float(17), 25D, 26E2BD, timestamp '2014-05-04 01:01:00.000', null)
0053 as t2(t2a, t2b, t2c, t2d, t2e, t2f, t2g, t2h, t2i);
0054
0055 create temporary view t3 as select * from values
0056 ('val3a', 6S, 12, 110L, float(15), 20D, 20E2BD, timestamp '2014-04-04 01:02:00.000', date '2014-04-04'),
0057 ('val3a', 6S, 12, 10L, float(15), 20D, 20E2BD, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
0058 ('val1b', 10S, 12, 219L, float(17), 25D, 26E2BD, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
0059 ('val1b', 10S, 12, 19L, float(17), 25D, 26E2BD, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
0060 ('val1b', 8S, 16, 319L, float(17), 25D, 26E2BD, timestamp '2014-06-04 01:02:00.000', date '2014-06-04'),
0061 ('val1b', 8S, 16, 19L, float(17), 25D, 26E2BD, timestamp '2014-07-04 01:02:00.000', date '2014-07-04'),
0062 ('val3c', 17S, 16, 519L, float(17), 25D, 26E2BD, timestamp '2014-08-04 01:02:00.000', date '2014-08-04'),
0063 ('val3c', 17S, 16, 19L, float(17), 25D, 26E2BD, timestamp '2014-09-04 01:02:00.000', date '2014-09-05'),
0064 ('val1b', null, 16, 419L, float(17), 25D, 26E2BD, timestamp '2014-10-04 01:02:00.000', null),
0065 ('val1b', null, 16, 19L, float(17), 25D, 26E2BD, timestamp '2014-11-04 01:02:00.000', null),
0066 ('val3b', 8S, null, 719L, float(17), 25D, 26E2BD, timestamp '2014-05-04 01:02:00.000', date '2014-05-04'),
0067 ('val3b', 8S, null, 19L, float(17), 25D, 26E2BD, timestamp '2015-05-04 01:02:00.000', date '2015-05-04')
0068 as t3(t3a, t3b, t3c, t3d, t3e, t3f, t3g, t3h, t3i);
0069
0070
0071
0072
0073 SELECT t1a, t1b
0074 FROM t1
0075 WHERE t1c = (SELECT max(t2c)
0076 FROM t2);
0077
0078
0079 SELECT t1a, t1d, t1f
0080 FROM t1
0081 WHERE t1c = (SELECT max(t2c)
0082 FROM t2)
0083 AND t1b > (SELECT min(t3b)
0084 FROM t3);
0085
0086
0087 SELECT t1a, t1h
0088 FROM t1
0089 WHERE t1c = (SELECT max(t2c)
0090 FROM t2)
0091 OR t1b = (SELECT min(t3b)
0092 FROM t3
0093 WHERE t3b > 10);
0094
0095
0096
0097 SELECT t1a, t1b, t2d
0098 FROM t1 LEFT JOIN t2
0099 ON t1a = t2a
0100 WHERE t1b = (SELECT min(t3b)
0101 FROM t3);
0102
0103
0104
0105 SELECT t1a, t1b, t1g
0106 FROM t1
0107 WHERE t1c + 5 = (SELECT max(t2e)
0108 FROM t2);
0109
0110
0111
0112 SELECT t1a, t1h
0113 FROM t1
0114 WHERE date(t1h) = (SELECT min(t2i)
0115 FROM t2);
0116
0117
0118
0119 SELECT t2d, t1a
0120 FROM t1, t2
0121 WHERE t1b = t2b
0122 AND t2c + 1 = (SELECT max(t2c) + 1
0123 FROM t2, t1
0124 WHERE t2b = t1b);
0125
0126
0127
0128 SELECT DISTINCT t2a, max_t1g
0129 FROM t2, (SELECT max(t1g) max_t1g, t1a
0130 FROM t1
0131 GROUP BY t1a) t1
0132 WHERE t2a = t1a
0133 AND max_t1g = (SELECT max(t1g)
0134 FROM t1);
0135
0136
0137
0138 SELECT t3b, t3c
0139 FROM t3
0140 WHERE (SELECT max(t3c)
0141 FROM t3
0142 WHERE t3b > 10) >=
0143 (SELECT min(t3b)
0144 FROM t3
0145 WHERE t3c > 0)
0146 AND (t3b is null or t3c is null);
0147
0148
0149
0150
0151 SELECT t1a
0152 FROM t1
0153 WHERE t1a < (SELECT max(t2a)
0154 FROM t2
0155 WHERE t2c = t1c
0156 GROUP BY t2c);
0157
0158
0159 SELECT t1a, t1c
0160 FROM t1
0161 WHERE (SELECT max(t2a)
0162 FROM t2
0163 WHERE t2c = t1c
0164 GROUP BY t2c) IS NULL;
0165
0166
0167 SELECT t1a
0168 FROM t1
0169 WHERE t1a = (SELECT max(t2a)
0170 FROM t2
0171 WHERE t2c = t1c
0172 GROUP BY t2c
0173 HAVING count(*) >= 0)
0174 OR t1i > '2014-12-31';
0175
0176
0177 SELECT t1a
0178 FROM t1
0179 WHERE t1a = (SELECT max(t2a)
0180 FROM t2
0181 WHERE t2c = t1c
0182 GROUP BY t2c
0183 HAVING count(*) >= 1)
0184 OR t1i > '2014-12-31';
0185
0186
0187
0188
0189 SELECT count(t1a)
0190 FROM t1 RIGHT JOIN t2
0191 ON t1d = t2d
0192 WHERE t1a < (SELECT max(t2a)
0193 FROM t2
0194 WHERE t2c = t1c
0195 GROUP BY t2c);
0196
0197
0198 SELECT t1a
0199 FROM t1
0200 WHERE t1b <= (SELECT max(t2b)
0201 FROM t2
0202 WHERE t2c = t1c
0203 GROUP BY t2c)
0204 AND t1b >= (SELECT min(t2b)
0205 FROM t2
0206 WHERE t2c = t1c
0207 GROUP BY t2c);
0208
0209
0210
0211 SELECT t1a
0212 FROM t1
0213 WHERE t1a <= (SELECT max(t2a)
0214 FROM t2
0215 WHERE t2c = t1c
0216 GROUP BY t2c)
0217 INTERSECT
0218 SELECT t1a
0219 FROM t1
0220 WHERE t1a >= (SELECT min(t2a)
0221 FROM t2
0222 WHERE t2c = t1c
0223 GROUP BY t2c);
0224
0225
0226
0227 SELECT t1a
0228 FROM t1
0229 WHERE t1a <= (SELECT max(t2a)
0230 FROM t2
0231 WHERE t2c = t1c
0232 GROUP BY t2c)
0233 UNION ALL
0234 SELECT t1a
0235 FROM t1
0236 WHERE t1a >= (SELECT min(t2a)
0237 FROM t2
0238 WHERE t2c = t1c
0239 GROUP BY t2c);
0240
0241
0242
0243 SELECT t1a
0244 FROM t1
0245 WHERE t1a <= (SELECT max(t2a)
0246 FROM t2
0247 WHERE t2c = t1c
0248 GROUP BY t2c)
0249 UNION DISTINCT
0250 SELECT t1a
0251 FROM t1
0252 WHERE t1a >= (SELECT min(t2a)
0253 FROM t2
0254 WHERE t2c = t1c
0255 GROUP BY t2c);
0256
0257
0258
0259 SELECT t1a
0260 FROM t1
0261 WHERE t1a <= (SELECT max(t2a)
0262 FROM t2
0263 WHERE t2c = t1c
0264 GROUP BY t2c)
0265 MINUS
0266 SELECT t1a
0267 FROM t1
0268 WHERE t1a >= (SELECT min(t2a)
0269 FROM t2
0270 WHERE t2c = t1c
0271 GROUP BY t2c);
0272
0273
0274
0275 SELECT t1a
0276 FROM t1
0277 GROUP BY t1a, t1c
0278 HAVING max(t1b) <= (SELECT max(t2b)
0279 FROM t2
0280 WHERE t2c = t1c
0281 GROUP BY t2c);