sqllogictest
Hex Artifact Content
Not logged in

Artifact 17d2a8dc171bca79ce3bc96d341a457565365b88:


0000: 68 61 73 68 2d 74 68 72 65 73 68 6f 6c 64 20 38  hash-threshold 8
0010: 0d 0a 0d 0a 73 74 61 74 65 6d 65 6e 74 20 6f 6b  ....statement ok
0020: 0d 0a 43 52 45 41 54 45 20 54 41 42 4c 45 20 74  ..CREATE TABLE t
0030: 61 62 30 28 63 6f 6c 30 20 49 4e 54 45 47 45 52  ab0(col0 INTEGER
0040: 2c 20 63 6f 6c 31 20 49 4e 54 45 47 45 52 2c 20  , col1 INTEGER, 
0050: 63 6f 6c 32 20 49 4e 54 45 47 45 52 29 0d 0a 0d  col2 INTEGER)...
0060: 0a 73 74 61 74 65 6d 65 6e 74 20 6f 6b 0d 0a 43  .statement ok..C
0070: 52 45 41 54 45 20 54 41 42 4c 45 20 74 61 62 31  REATE TABLE tab1
0080: 28 63 6f 6c 30 20 49 4e 54 45 47 45 52 2c 20 63  (col0 INTEGER, c
0090: 6f 6c 31 20 49 4e 54 45 47 45 52 2c 20 63 6f 6c  ol1 INTEGER, col
00a0: 32 20 49 4e 54 45 47 45 52 29 0d 0a 0d 0a 73 74  2 INTEGER)....st
00b0: 61 74 65 6d 65 6e 74 20 6f 6b 0d 0a 43 52 45 41  atement ok..CREA
00c0: 54 45 20 54 41 42 4c 45 20 74 61 62 32 28 63 6f  TE TABLE tab2(co
00d0: 6c 30 20 49 4e 54 45 47 45 52 2c 20 63 6f 6c 31  l0 INTEGER, col1
00e0: 20 49 4e 54 45 47 45 52 2c 20 63 6f 6c 32 20 49   INTEGER, col2 I
00f0: 4e 54 45 47 45 52 29 0d 0a 0d 0a 73 74 61 74 65  NTEGER)....state
0100: 6d 65 6e 74 20 6f 6b 0d 0a 49 4e 53 45 52 54 20  ment ok..INSERT 
0110: 49 4e 54 4f 20 74 61 62 30 20 56 41 4c 55 45 53  INTO tab0 VALUES
0120: 28 38 33 2c 30 2c 33 38 29 0d 0a 0d 0a 73 74 61  (83,0,38)....sta
0130: 74 65 6d 65 6e 74 20 6f 6b 0d 0a 49 4e 53 45 52  tement ok..INSER
0140: 54 20 49 4e 54 4f 20 74 61 62 30 20 56 41 4c 55  T INTO tab0 VALU
0150: 45 53 28 32 36 2c 30 2c 37 39 29 0d 0a 0d 0a 73  ES(26,0,79)....s
0160: 74 61 74 65 6d 65 6e 74 20 6f 6b 0d 0a 49 4e 53  tatement ok..INS
0170: 45 52 54 20 49 4e 54 4f 20 74 61 62 30 20 56 41  ERT INTO tab0 VA
0180: 4c 55 45 53 28 34 33 2c 38 31 2c 32 34 29 0d 0a  LUES(43,81,24)..
0190: 0d 0a 73 74 61 74 65 6d 65 6e 74 20 6f 6b 0d 0a  ..statement ok..
01a0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 61 62 31  INSERT INTO tab1
01b0: 20 56 41 4c 55 45 53 28 32 32 2c 36 2c 38 29 0d   VALUES(22,6,8).
01c0: 0a 0d 0a 73 74 61 74 65 6d 65 6e 74 20 6f 6b 0d  ...statement ok.
01d0: 0a 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 61 62  .INSERT INTO tab
01e0: 31 20 56 41 4c 55 45 53 28 32 38 2c 35 37 2c 34  1 VALUES(28,57,4
01f0: 35 29 0d 0a 0d 0a 73 74 61 74 65 6d 65 6e 74 20  5)....statement 
0200: 6f 6b 0d 0a 49 4e 53 45 52 54 20 49 4e 54 4f 20  ok..INSERT INTO 
0210: 74 61 62 31 20 56 41 4c 55 45 53 28 38 32 2c 34  tab1 VALUES(82,4
0220: 34 2c 37 31 29 0d 0a 0d 0a 73 74 61 74 65 6d 65  4,71)....stateme
0230: 6e 74 20 6f 6b 0d 0a 49 4e 53 45 52 54 20 49 4e  nt ok..INSERT IN
0240: 54 4f 20 74 61 62 32 20 56 41 4c 55 45 53 28 31  TO tab2 VALUES(1
0250: 35 2c 36 31 2c 38 37 29 0d 0a 0d 0a 73 74 61 74  5,61,87)....stat
0260: 65 6d 65 6e 74 20 6f 6b 0d 0a 49 4e 53 45 52 54  ement ok..INSERT
0270: 20 49 4e 54 4f 20 74 61 62 32 20 56 41 4c 55 45   INTO tab2 VALUE
0280: 53 28 39 31 2c 35 39 2c 37 39 29 0d 0a 0d 0a 73  S(91,59,79)....s
0290: 74 61 74 65 6d 65 6e 74 20 6f 6b 0d 0a 49 4e 53  tatement ok..INS
02a0: 45 52 54 20 49 4e 54 4f 20 74 61 62 32 20 56 41  ERT INTO tab2 VA
02b0: 4c 55 45 53 28 39 32 2c 34 31 2c 35 38 29 0d 0a  LUES(92,41,58)..
02c0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
02d0: 74 0d 0a 53 45 4c 45 43 54 20 2b 20 34 35 20 46  t..SELECT + 45 F
02e0: 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
02f0: 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab1.col2..---
0300: 2d 0d 0a 34 35 0d 0a 34 35 0d 0a 34 35 0d 0a 0d  -..45..45..45...
0310: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
0320: 0d 0a 53 45 4c 45 43 54 20 37 35 20 41 53 20 63  ..SELECT 75 AS c
0330: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol2 FROM tab0 GR
0340: 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32  OUP BY tab0.col2
0350: 0d 0a 2d 2d 2d 2d 0d 0a 37 35 0d 0a 37 35 0d 0a  ..----..75..75..
0360: 37 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  75....query I ro
0370: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 34 39  wsort..SELECT 49
0380: 20 2d 20 2d 20 63 6f 6c 32 20 2a 20 63 6f 72 30   - - col2 * cor0
0390: 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20  .col1 FROM tab0 
03a0: 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
03b0: 20 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 32   col1, cor0.col2
03c0: 0d 0a 2d 2d 2d 2d 0d 0a 31 39 39 33 0d 0a 34 39  ..----..1993..49
03d0: 0d 0a 34 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..49....onlyif m
03e0: 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
03f0: 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
0400: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
0410: 72 74 20 6c 61 62 65 6c 2d 33 0d 0a 53 45 4c 45  rt label-3..SELE
0420: 43 54 20 2b 20 74 61 62 31 2e 63 6f 6c 32 20 44  CT + tab1.col2 D
0430: 49 56 20 2d 20 74 61 62 31 2e 63 6f 6c 32 20 46  IV - tab1.col2 F
0440: 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
0450: 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab1.col2..---
0460: 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d  -..-1..-1..-1...
0470: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
0480: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
0490: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
04a0: 6c 61 62 65 6c 2d 33 0d 0a 53 45 4c 45 43 54 20  label-3..SELECT 
04b0: 2b 20 74 61 62 31 2e 63 6f 6c 32 20 2f 20 2d 20  + tab1.col2 / - 
04c0: 74 61 62 31 2e 63 6f 6c 32 20 46 52 4f 4d 20 74  tab1.col2 FROM t
04d0: 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
04e0: 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  1.col2..----..-1
04f0: 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a 73 6b 69 70  ..-1..-1....skip
0500: 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
0510: 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
0520: 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
0530: 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
0540: 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
0550: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
0560: 20 2d 20 63 6f 6c 32 20 2b 20 32 31 20 2a 20 37   - col2 + 21 * 7
0570: 36 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  6 col0 FROM tab0
0580: 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
0590: 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 35 31 37 0d  ol2..----..1517.
05a0: 0a 31 35 35 38 0d 0a 31 35 37 32 0d 0a 0d 0a 71  .1558..1572....q
05b0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
05c0: 53 45 4c 45 43 54 20 33 38 20 46 52 4f 4d 20 74  SELECT 38 FROM t
05d0: 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
05e0: 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20  P BY cor0.col0, 
05f0: 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  cor0.col2..----.
0600: 0a 33 38 0d 0a 33 38 0d 0a 33 38 0d 0a 0d 0a 71  .38..38..38....q
0610: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
0620: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
0630: 2d 20 35 35 20 46 52 4f 4d 20 74 61 62 30 20 41  - 55 FROM tab0 A
0640: 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
0650: 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  cor0.col1..----.
0660: 0a 2d 35 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-55....query I 
0670: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
0680: 41 4c 4c 20 2d 20 2d 20 74 61 62 32 2e 63 6f 6c  ALL - - tab2.col
0690: 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  0 AS col0 FROM t
06a0: 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab2 GROUP BY tab
06b0: 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35  2.col0..----..15
06c0: 0d 0a 39 31 0d 0a 39 32 0d 0a 0d 0a 71 75 65 72  ..91..92....quer
06d0: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
06e0: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 74  ECT DISTINCT + t
06f0: 61 62 31 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 31  ab1.col2 AS col1
0700: 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50   FROM tab1 GROUP
0710: 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a   BY col2..----..
0720: 34 35 0d 0a 37 31 0d 0a 38 0d 0a 0d 0a 71 75 65  45..71..8....que
0730: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
0740: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f  LECT DISTINCT co
0750: 72 30 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20  r0.col1 AS col1 
0760: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
0770: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
0780: 63 6f 6c 31 20 48 41 56 49 4e 47 20 4e 4f 54 20  col1 HAVING NOT 
0790: 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  NULL IS NULL..--
07a0: 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
07b0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 74 61  wsort..SELECT ta
07c0: 62 32 2e 63 6f 6c 32 20 2a 20 2d 20 74 61 62 32  b2.col2 * - tab2
07d0: 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20  .col2 FROM tab2 
07e0: 47 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d  GROUP BY col2..-
07f0: 2d 2d 2d 0d 0a 2d 33 33 36 34 0d 0a 2d 36 32 34  ---..-3364..-624
0800: 31 0d 0a 2d 37 35 36 39 0d 0a 0d 0a 6f 6e 6c 79  1..-7569....only
0810: 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
0820: 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
0830: 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
0840: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 0d  owsort label-11.
0850: 0a 53 45 4c 45 43 54 20 2b 20 28 20 43 4f 41 4c  .SELECT + ( COAL
0860: 45 53 43 45 20 28 20 2b 20 32 39 2c 20 2b 20 74  ESCE ( + 29, + t
0870: 61 62 31 2e 63 6f 6c 32 20 29 20 29 20 44 49 56  ab1.col2 ) ) DIV
0880: 20 2d 20 74 61 62 31 2e 63 6f 6c 31 20 41 53 20   - tab1.col1 AS 
0890: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 47  col0 FROM tab1 G
08a0: 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a 2d 2d  ROUP BY col1..--
08b0: 2d 2d 0d 0a 2d 34 0d 0a 30 0d 0a 30 0d 0a 0d 0a  --..-4..0..0....
08c0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
08d0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
08e0: 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
08f0: 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 68 61   # PostgreSQL ha
0900: 73 20 73 74 72 69 63 74 20 63 6f 6c 75 6d 6e 20  s strict column 
0910: 75 73 61 67 65 20 66 6f 72 20 47 52 4f 55 50 20  usage for GROUP 
0920: 42 59 20 63 6c 61 75 73 65 73 0d 0a 71 75 65 72  BY clauses..quer
0930: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
0940: 6c 2d 31 31 0d 0a 53 45 4c 45 43 54 20 2b 20 28  l-11..SELECT + (
0950: 20 43 4f 41 4c 45 53 43 45 20 28 20 2b 20 32 39   COALESCE ( + 29
0960: 2c 20 2b 20 74 61 62 31 2e 63 6f 6c 32 20 29 20  , + tab1.col2 ) 
0970: 29 20 2f 20 2d 20 74 61 62 31 2e 63 6f 6c 31 20  ) / - tab1.col1 
0980: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
0990: 31 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d  1 GROUP BY col1.
09a0: 0a 2d 2d 2d 2d 0d 0a 2d 34 0d 0a 30 0d 0a 30 0d  .----..-4..0..0.
09b0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
09c0: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 33  rt..SELECT ALL 3
09d0: 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20   FROM tab0 cor0 
09e0: 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a 2d  GROUP BY col1..-
09f0: 2d 2d 2d 0d 0a 33 0d 0a 33 0d 0a 0d 0a 71 75 65  ---..3..3....que
0a00: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
0a10: 4c 45 43 54 20 2d 20 63 6f 6c 32 20 2b 20 2d 20  LECT - col2 + - 
0a20: 39 33 20 2a 20 74 61 62 30 2e 63 6f 6c 32 20 41  93 * tab0.col2 A
0a30: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
0a40: 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
0a50: 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 35 36  ol2..----..-2256
0a60: 0d 0a 2d 33 35 37 32 0d 0a 2d 37 34 32 36 0d 0a  ..-3572..-7426..
0a70: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
0a80: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
0a90: 63 6f 72 30 2e 63 6f 6c 32 20 2b 20 34 38 20 46  cor0.col2 + 48 F
0aa0: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
0ab0: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
0ac0: 6f 6c 31 2c 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  ol1, col2..----.
0ad0: 0a 2d 32 33 0d 0a 33 0d 0a 34 30 0d 0a 0d 0a 71  .-23..3..40....q
0ae0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
0af0: 53 45 4c 45 43 54 20 36 20 41 53 20 63 6f 6c 31  SELECT 6 AS col1
0b00: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
0b10: 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
0b20: 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 31  .col1, cor0.col1
0b30: 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a 36 0d 0a 36 0d  ..----..6..6..6.
0b40: 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
0b50: 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
0b60: 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
0b70: 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
0b80: 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
0b90: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
0ba0: 45 43 54 20 2d 20 2d 20 34 36 20 2b 20 2b 20 74  ECT - - 46 + + t
0bb0: 61 62 32 2e 63 6f 6c 32 20 63 6f 6c 30 20 46 52  ab2.col2 col0 FR
0bc0: 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
0bd0: 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   tab2.col2..----
0be0: 0d 0a 31 30 34 0d 0a 31 32 35 0d 0a 31 33 33 0d  ..104..125..133.
0bf0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
0c00: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
0c10: 4e 43 54 20 32 35 20 41 53 20 63 6f 6c 30 20 46  NCT 25 AS col0 F
0c20: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
0c30: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
0c40: 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 35 0d 0a 0d  ol0..----..25...
0c50: 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
0c60: 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
0c70: 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
0c80: 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
0c90: 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
0ca0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
0cb0: 54 20 32 33 20 63 6f 6c 31 20 46 52 4f 4d 20 74  T 23 col1 FROM t
0cc0: 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab1 AS cor0 GROU
0cd0: 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  P BY col0..----.
0ce0: 0a 32 33 0d 0a 32 33 0d 0a 32 33 0d 0a 0d 0a 71  .23..23..23....q
0cf0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
0d00: 53 45 4c 45 43 54 20 2d 20 63 6f 72 30 2e 63 6f  SELECT - cor0.co
0d10: 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72  l0 FROM tab1 cor
0d20: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 30 0d  0 GROUP BY col0.
0d30: 0a 2d 2d 2d 2d 0d 0a 2d 32 32 0d 0a 2d 32 38 0d  .----..-22..-28.
0d40: 0a 2d 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-82....query I 
0d50: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
0d60: 44 49 53 54 49 4e 43 54 20 2d 20 38 20 2a 20 74  DISTINCT - 8 * t
0d70: 61 62 32 2e 63 6f 6c 30 20 2b 20 74 61 62 32 2e  ab2.col0 + tab2.
0d80: 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f  col0 AS col0 FRO
0d90: 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
0da0: 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab2.col0..----.
0db0: 0a 2d 31 30 35 0d 0a 2d 36 33 37 0d 0a 2d 36 34  .-105..-637..-64
0dc0: 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  4....query I row
0dd0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
0de0: 20 33 36 20 46 52 4f 4d 20 74 61 62 32 20 47 52   36 FROM tab2 GR
0df0: 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30  OUP BY tab2.col0
0e00: 0d 0a 2d 2d 2d 2d 0d 0a 33 36 0d 0a 33 36 0d 0a  ..----..36..36..
0e10: 33 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  36....query I ro
0e20: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
0e30: 63 6f 72 30 2e 63 6f 6c 30 20 2a 20 2b 20 36 31  cor0.col0 * + 61
0e40: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
0e50: 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b1 AS cor0 GROUP
0e60: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d   BY cor0.col0..-
0e70: 2d 2d 2d 0d 0a 2d 31 33 34 32 0d 0a 2d 31 37 30  ---..-1342..-170
0e80: 38 0d 0a 2d 35 30 30 32 0d 0a 0d 0a 71 75 65 72  8..-5002....quer
0e90: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
0ea0: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63  ECT DISTINCT - c
0eb0: 6f 72 30 2e 63 6f 6c 30 20 2a 20 63 6f 6c 30 20  or0.col0 * col0 
0ec0: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
0ed0: 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  2 AS cor0 GROUP 
0ee0: 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  BY cor0.col0..--
0ef0: 2d 2d 0d 0a 2d 32 32 35 0d 0a 2d 38 32 38 31 0d  --..-225..-8281.
0f00: 0a 2d 38 34 36 34 0d 0a 0d 0a 71 75 65 72 79 20  .-8464....query 
0f10: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
0f20: 54 20 2d 20 36 37 20 2a 20 2b 20 63 6f 72 30 2e  T - 67 * + cor0.
0f30: 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f  col2 AS col1 FRO
0f40: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
0f50: 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
0f60: 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 38 38 36 0d 0a  2..----..-3886..
0f70: 2d 35 32 39 33 0d 0a 2d 35 38 32 39 0d 0a 0d 0a  -5293..-5829....
0f80: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
0f90: 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 41 53 20  .SELECT col2 AS 
0fa0: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 63  col2 FROM tab2 c
0fb0: 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
0fc0: 30 2e 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c  0.col2, cor0.col
0fd0: 30 0d 0a 2d 2d 2d 2d 0d 0a 35 38 0d 0a 37 39 0d  0..----..58..79.
0fe0: 0a 38 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .87....query I r
0ff0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
1000: 4c 4c 20 2b 20 74 61 62 31 2e 63 6f 6c 30 20 2a  LL + tab1.col0 *
1010: 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52   col0 AS col1 FR
1020: 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
1030: 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 34 38 34   col0..----..484
1040: 0d 0a 36 37 32 34 0d 0a 37 38 34 0d 0a 0d 0a 71  ..6724..784....q
1050: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1060: 53 45 4c 45 43 54 20 39 31 20 46 52 4f 4d 20 74  SELECT 91 FROM t
1070: 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
1080: 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20  P BY cor0.col1, 
1090: 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor0.col0..----.
10a0: 0a 39 31 0d 0a 39 31 0d 0a 39 31 0d 0a 0d 0a 71  .91..91..91....q
10b0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
10c0: 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 28 20 2d  SELECT ALL + ( -
10d0: 20 31 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41   1 ) FROM tab1 A
10e0: 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
10f0: 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  cor0.col1..----.
1100: 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a 71  .-1..-1..-1....q
1110: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1120: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1130: 2d 20 43 41 53 45 20 2b 20 74 61 62 30 2e 63 6f  - CASE + tab0.co
1140: 6c 30 20 57 48 45 4e 20 2d 20 74 61 62 30 2e 63  l0 WHEN - tab0.c
1150: 6f 6c 30 20 54 48 45 4e 20 2d 20 74 61 62 30 2e  ol0 THEN - tab0.
1160: 63 6f 6c 30 20 45 4c 53 45 20 2d 20 74 61 62 30  col0 ELSE - tab0
1170: 2e 63 6f 6c 30 20 45 4e 44 20 46 52 4f 4d 20 74  .col0 END FROM t
1180: 61 62 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c  ab0 GROUP BY col
1190: 30 0d 0a 2d 2d 2d 2d 0d 0a 32 36 0d 0a 34 33 0d  0..----..26..43.
11a0: 0a 38 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .83....query I r
11b0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
11c0: 4c 4c 20 2b 20 2b 20 38 36 20 2a 20 2d 20 74 61  LL + + 86 * - ta
11d0: 62 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  b0.col2 FROM tab
11e0: 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
11f0: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 36  col2..----..-206
1200: 34 0d 0a 2d 33 32 36 38 0d 0a 2d 36 37 39 34 0d  4..-3268..-6794.
1210: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1220: 72 74 0d 0a 53 45 4c 45 43 54 20 38 32 20 2a 20  rt..SELECT 82 * 
1230: 63 6f 72 30 2e 63 6f 6c 31 20 46 52 4f 4d 20 74  cor0.col1 FROM t
1240: 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab0 AS cor0 GROU
1250: 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a  P BY cor0.col1..
1260: 2d 2d 2d 2d 0d 0a 30 0d 0a 36 36 34 32 0d 0a 0d  ----..0..6642...
1270: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1280: 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e 63 6f  ..SELECT cor0.co
1290: 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l1 AS col1 FROM 
12a0: 74 61 62 32 20 63 6f 72 30 20 47 52 4f 55 50 20  tab2 cor0 GROUP 
12b0: 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f  BY cor0.col0, co
12c0: 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34  r0.col1..----..4
12d0: 31 0d 0a 35 39 0d 0a 36 31 0d 0a 0d 0a 71 75 65  1..59..61....que
12e0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
12f0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
1300: 31 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  10 FROM tab2 AS 
1310: 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
1320: 72 30 2e 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f  r0.col2, cor0.co
1330: 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 0d 0a 0d  l1..----..-10...
1340: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1350: 0d 0a 53 45 4c 45 43 54 20 2d 20 34 33 20 46 52  ..SELECT - 43 FR
1360: 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59  OM tab0 GROUP BY
1370: 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   tab0.col0..----
1380: 0d 0a 2d 34 33 0d 0a 2d 34 33 0d 0a 2d 34 33 0d  ..-43..-43..-43.
1390: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
13a0: 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 72  rt..SELECT + cor
13b0: 30 2e 63 6f 6c 31 20 2a 20 36 39 20 41 53 20 63  0.col1 * 69 AS c
13c0: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
13d0: 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
13e0: 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63  or0.col1, cor0.c
13f0: 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  ol0, cor0.col0..
1400: 2d 2d 2d 2d 0d 0a 33 30 33 36 0d 0a 33 39 33 33  ----..3036..3933
1410: 0d 0a 34 31 34 0d 0a 0d 0a 71 75 65 72 79 20 49  ..414....query I
1420: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1430: 20 44 49 53 54 49 4e 43 54 20 74 61 62 32 2e 63   DISTINCT tab2.c
1440: 6f 6c 31 20 2b 20 74 61 62 32 2e 63 6f 6c 31 20  ol1 + tab2.col1 
1450: 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
1460: 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31  BY col1..----..1
1470: 31 38 0d 0a 31 32 32 0d 0a 38 32 0d 0a 0d 0a 71  18..122..82....q
1480: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1490: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
14a0: 31 32 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f  12 FROM tab2 GRO
14b0: 55 50 20 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d  UP BY col1..----
14c0: 0d 0a 31 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..12....query I 
14d0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
14e0: 41 4c 4c 20 74 61 62 30 2e 63 6f 6c 30 20 41 53  ALL tab0.col0 AS
14f0: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
1500: 47 52 4f 55 50 20 42 59 20 63 6f 6c 30 0d 0a 2d  GROUP BY col0..-
1510: 2d 2d 2d 0d 0a 32 36 0d 0a 34 33 0d 0a 38 33 0d  ---..26..43..83.
1520: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1530: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
1540: 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52   col0 AS col2 FR
1550: 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 55  OM tab2 WHERE NU
1560: 4c 4c 20 4e 4f 54 20 49 4e 20 28 20 74 61 62 32  LL NOT IN ( tab2
1570: 2e 63 6f 6c 32 20 29 20 47 52 4f 55 50 20 42 59  .col2 ) GROUP BY
1580: 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   tab2.col0..----
1590: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
15a0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30  ort..SELECT cor0
15b0: 2e 63 6f 6c 30 20 2b 20 63 6f 72 30 2e 63 6f 6c  .col0 + cor0.col
15c0: 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
15d0: 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
15e0: 30 2e 63 6f 6c 30 20 48 41 56 49 4e 47 20 4e 55  0.col0 HAVING NU
15f0: 4c 4c 20 3c 3e 20 28 20 4e 55 4c 4c 20 29 0d 0a  LL <> ( NULL )..
1600: 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
1610: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1620: 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 34 32 20  DISTINCT + + 42 
1630: 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20  FROM tab1 GROUP 
1640: 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d  BY tab1.col2..--
1650: 2d 2d 0d 0a 34 32 0d 0a 0d 0a 71 75 65 72 79 20  --..42....query 
1660: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1670: 54 20 2d 20 32 31 20 41 53 20 63 6f 6c 31 20 46  T - 21 AS col1 F
1680: 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
1690: 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab1.col2..---
16a0: 2d 0d 0a 2d 32 31 0d 0a 2d 32 31 0d 0a 2d 32 31  -..-21..-21..-21
16b0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
16c0: 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
16d0: 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
16e0: 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
16f0: 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
1700: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1710: 4c 45 43 54 20 41 4c 4c 20 2d 20 38 38 20 63 6f  LECT ALL - 88 co
1720: 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f  l1 FROM tab1 GRO
1730: 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 30 0d  UP BY tab1.col0.
1740: 0a 2d 2d 2d 2d 0d 0a 2d 38 38 0d 0a 2d 38 38 0d  .----..-88..-88.
1750: 0a 2d 38 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-88....query I 
1760: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1770: 2d 20 2d 20 74 61 62 31 2e 63 6f 6c 31 20 2b 20  - - tab1.col1 + 
1780: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 47  col1 FROM tab1 G
1790: 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
17a0: 31 0d 0a 2d 2d 2d 2d 0d 0a 31 31 34 0d 0a 31 32  1..----..114..12
17b0: 0d 0a 38 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  ..88....skipif p
17c0: 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
17d0: 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
17e0: 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
17f0: 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
1800: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1810: 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e 63 6f  ..SELECT cor0.co
1820: 6c 31 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  l1 col1 FROM tab
1830: 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  2 AS cor0 GROUP 
1840: 42 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f  BY cor0.col1, co
1850: 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34  r0.col1..----..4
1860: 31 0d 0a 35 39 0d 0a 36 31 0d 0a 0d 0a 71 75 65  1..59..61....que
1870: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1880: 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20 63 6f 6c  LECT ALL - + col
1890: 32 20 2a 20 74 61 62 32 2e 63 6f 6c 32 20 41 53  2 * tab2.col2 AS
18a0: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
18b0: 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
18c0: 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 33 36 34 0d  l2..----..-3364.
18d0: 0a 2d 36 32 34 31 0d 0a 2d 37 35 36 39 0d 0a 0d  .-6241..-7569...
18e0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
18f0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1900: 54 20 2b 20 2d 20 38 31 20 46 52 4f 4d 20 74 61  T + - 81 FROM ta
1910: 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30  b0 GROUP BY tab0
1920: 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 31  .col2..----..-81
1930: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1940: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
1950: 2b 20 35 36 20 46 52 4f 4d 20 74 61 62 31 20 47  + 56 FROM tab1 G
1960: 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
1970: 32 0d 0a 2d 2d 2d 2d 0d 0a 35 36 0d 0a 35 36 0d  2..----..56..56.
1980: 0a 35 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .56....onlyif my
1990: 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
19a0: 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
19b0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
19c0: 74 20 6c 61 62 65 6c 2d 34 39 0d 0a 53 45 4c 45  t label-49..SELE
19d0: 43 54 20 2b 20 38 32 20 44 49 56 20 38 37 20 46  CT + 82 DIV 87 F
19e0: 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42  ROM tab0 GROUP B
19f0: 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab0.col2..---
1a00: 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b  -..0..0..0....sk
1a10: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1a20: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
1a30: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1a40: 65 6c 2d 34 39 0d 0a 53 45 4c 45 43 54 20 2b 20  el-49..SELECT + 
1a50: 38 32 20 2f 20 38 37 20 46 52 4f 4d 20 74 61 62  82 / 87 FROM tab
1a60: 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
1a70: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30  col2..----..0..0
1a80: 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..0....query I r
1a90: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
1aa0: 20 39 33 20 46 52 4f 4d 20 74 61 62 32 20 47 52   93 FROM tab2 GR
1ab0: 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31  OUP BY tab2.col1
1ac0: 0d 0a 2d 2d 2d 2d 0d 0a 39 33 0d 0a 39 33 0d 0a  ..----..93..93..
1ad0: 39 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  93....query I ro
1ae0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 33 36  wsort..SELECT 36
1af0: 20 2d 20 2b 20 63 6f 72 30 2e 63 6f 6c 32 20 41   - + cor0.col2 A
1b00: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
1b10: 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
1b20: 59 20 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c  Y col2, cor0.col
1b30: 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 0d 0a 2d 34 33  1..----..-2..-43
1b40: 0d 0a 31 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..12....query I 
1b50: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1b60: 33 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f  30 FROM tab2 GRO
1b70: 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d  UP BY col2..----
1b80: 0d 0a 33 30 0d 0a 33 30 0d 0a 33 30 0d 0a 0d 0a  ..30..30..30....
1b90: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1ba0: 0a 53 45 4c 45 43 54 20 2b 20 2b 20 74 61 62 32  .SELECT + + tab2
1bb0: 2e 63 6f 6c 31 20 2a 20 74 61 62 32 2e 63 6f 6c  .col1 * tab2.col
1bc0: 31 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  1 FROM tab2 GROU
1bd0: 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a  P BY tab2.col1..
1be0: 2d 2d 2d 2d 0d 0a 31 36 38 31 0d 0a 33 34 38 31  ----..1681..3481
1bf0: 0d 0a 33 37 32 31 0d 0a 0d 0a 71 75 65 72 79 20  ..3721....query 
1c00: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1c10: 54 20 41 4c 4c 20 2b 20 34 39 20 41 53 20 63 6f  T ALL + 49 AS co
1c20: 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
1c30: 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
1c40: 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 34  r0.col0..----..4
1c50: 39 0d 0a 34 39 0d 0a 34 39 0d 0a 0d 0a 71 75 65  9..49..49....que
1c60: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1c70: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
1c80: 63 6f 72 30 2e 63 6f 6c 32 20 2a 20 2d 20 38 37  cor0.col2 * - 87
1c90: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
1ca0: 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b2 AS cor0 GROUP
1cb0: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63   BY cor0.col0, c
1cc0: 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a  ol2, cor0.col1..
1cd0: 2d 2d 2d 2d 0d 0a 2d 35 30 34 36 0d 0a 2d 36 38  ----..-5046..-68
1ce0: 37 33 0d 0a 2d 37 35 36 39 0d 0a 0d 0a 6f 6e 6c  73..-7569....onl
1cf0: 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
1d00: 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
1d10: 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
1d20: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 36  rowsort label-56
1d30: 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 72 30 2e  ..SELECT + cor0.
1d40: 63 6f 6c 31 20 44 49 56 20 63 6f 72 30 2e 63 6f  col1 DIV cor0.co
1d50: 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l1 FROM tab1 AS 
1d60: 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
1d70: 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f  r0.col1, cor0.co
1d80: 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a  l1..----..1..1..
1d90: 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  1....skipif mysq
1da0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
1db0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
1dc0: 6f 72 74 20 6c 61 62 65 6c 2d 35 36 0d 0a 53 45  ort label-56..SE
1dd0: 4c 45 43 54 20 2b 20 63 6f 72 30 2e 63 6f 6c 31  LECT + cor0.col1
1de0: 20 2f 20 63 6f 72 30 2e 63 6f 6c 31 20 46 52 4f   / cor0.col1 FRO
1df0: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47  M tab1 AS cor0 G
1e00: 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
1e10: 31 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d  1, cor0.col1..--
1e20: 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a 71  --..1..1..1....q
1e30: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1e40: 53 45 4c 45 43 54 20 2b 20 36 34 20 46 52 4f 4d  SELECT + 64 FROM
1e50: 20 74 61 62 32 20 63 6f 72 30 20 47 52 4f 55 50   tab2 cor0 GROUP
1e60: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d   BY cor0.col2..-
1e70: 2d 2d 2d 0d 0a 36 34 0d 0a 36 34 0d 0a 36 34 0d  ---..64..64..64.
1e80: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1e90: 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 38 20 2b  rt..SELECT - 8 +
1ea0: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
1eb0: 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
1ec0: 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   cor0.col2..----
1ed0: 0d 0a 30 0d 0a 33 37 0d 0a 36 33 0d 0a 0d 0a 71  ..0..37..63....q
1ee0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1ef0: 53 45 4c 45 43 54 20 41 4c 4c 20 74 61 62 30 2e  SELECT ALL tab0.
1f00: 63 6f 6c 32 20 2b 20 31 31 20 41 53 20 63 6f 6c  col2 + 11 AS col
1f10: 30 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55  0 FROM tab0 GROU
1f20: 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a  P BY tab0.col2..
1f30: 2d 2d 2d 2d 0d 0a 33 35 0d 0a 34 39 0d 0a 39 30  ----..35..49..90
1f40: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1f50: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 35 30  ort..SELECT + 50
1f60: 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
1f70: 20 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d   BY tab0.col1..-
1f80: 2d 2d 2d 0d 0a 35 30 0d 0a 35 30 0d 0a 0d 0a 71  ---..50..50....q
1f90: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1fa0: 53 45 4c 45 43 54 20 2b 20 63 6f 6c 31 20 41 53  SELECT + col1 AS
1fb0: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
1fc0: 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
1fd0: 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 31 0d 0a 35 39  l1..----..41..59
1fe0: 0d 0a 36 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..61....onlyif m
1ff0: 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
2000: 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
2010: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2020: 72 74 20 6c 61 62 65 6c 2d 36 32 0d 0a 53 45 4c  rt label-62..SEL
2030: 45 43 54 20 2d 20 63 6f 6c 32 20 2b 20 43 41 53  ECT - col2 + CAS
2040: 54 28 20 63 6f 6c 32 20 2d 20 35 33 20 41 53 20  T( col2 - 53 AS 
2050: 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61  SIGNED ) FROM ta
2060: 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31  b1 GROUP BY tab1
2070: 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 33  .col2..----..-53
2080: 0d 0a 2d 35 33 0d 0a 2d 35 33 0d 0a 0d 0a 73 6b  ..-53..-53....sk
2090: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
20a0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
20b0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
20c0: 65 6c 2d 36 32 0d 0a 53 45 4c 45 43 54 20 2d 20  el-62..SELECT - 
20d0: 63 6f 6c 32 20 2b 20 43 41 53 54 20 28 20 63 6f  col2 + CAST ( co
20e0: 6c 32 20 2d 20 35 33 20 41 53 20 49 4e 54 45 47  l2 - 53 AS INTEG
20f0: 45 52 20 29 20 46 52 4f 4d 20 74 61 62 31 20 47  ER ) FROM tab1 G
2100: 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
2110: 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 33 0d 0a 2d 35  2..----..-53..-5
2120: 33 0d 0a 2d 35 33 0d 0a 0d 0a 73 6b 69 70 69 66  3..-53....skipif
2130: 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
2140: 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
2150: 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
2160: 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
2170: 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
2180: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63  rt..SELECT ALL c
2190: 6f 6c 31 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  ol1 col1 FROM ta
21a0: 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b1 AS cor0 GROUP
21b0: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63   BY cor0.col1, c
21c0: 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  or0.col1..----..
21d0: 34 34 0d 0a 35 37 0d 0a 36 0d 0a 0d 0a 71 75 65  44..57..6....que
21e0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
21f0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f  LECT DISTINCT co
2200: 72 30 2e 63 6f 6c 32 20 2b 20 2b 20 34 32 20 46  r0.col2 + + 42 F
2210: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
2220: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
2230: 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a  ol1, cor0.col2..
2240: 2d 2d 2d 2d 0d 0a 31 31 33 0d 0a 35 30 0d 0a 38  ----..113..50..8
2250: 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  7....onlyif mysq
2260: 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
2270: 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
2280: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2290: 6c 61 62 65 6c 2d 36 35 0d 0a 53 45 4c 45 43 54  label-65..SELECT
22a0: 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 44 49 56 20   ALL + col2 DIV 
22b0: 63 6f 72 30 2e 63 6f 6c 32 20 2b 20 34 34 20 46  cor0.col2 + 44 F
22c0: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
22d0: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
22e0: 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  ol2, cor0.col0..
22f0: 2d 2d 2d 2d 0d 0a 34 35 0d 0a 34 35 0d 0a 34 35  ----..45..45..45
2300: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2310: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2320: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2330: 72 74 20 6c 61 62 65 6c 2d 36 35 0d 0a 53 45 4c  rt label-65..SEL
2340: 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 2f  ECT ALL + col2 /
2350: 20 63 6f 72 30 2e 63 6f 6c 32 20 2b 20 34 34 20   cor0.col2 + 44 
2360: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
2370: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
2380: 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d  col2, cor0.col0.
2390: 0a 2d 2d 2d 2d 0d 0a 34 35 0d 0a 34 35 0d 0a 34  .----..45..45..4
23a0: 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
23b0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
23c0: 54 49 4e 43 54 20 2d 20 39 39 20 2b 20 2d 20 36  TINCT - 99 + - 6
23d0: 32 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  2 FROM tab2 GROU
23e0: 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a  P BY tab2.col0..
23f0: 2d 2d 2d 2d 0d 0a 2d 31 36 31 0d 0a 0d 0a 71 75  ----..-161....qu
2400: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2410: 45 4c 45 43 54 20 2b 20 38 20 46 52 4f 4d 20 74  ELECT + 8 FROM t
2420: 61 62 31 20 47 52 4f 55 50 20 42 59 20 63 6f 6c  ab1 GROUP BY col
2430: 31 0d 0a 2d 2d 2d 2d 0d 0a 38 0d 0a 38 0d 0a 38  1..----..8..8..8
2440: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2450: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20  ort..SELECT - ( 
2460: 31 32 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  12 ) AS col1 FRO
2470: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47  M tab1 AS cor0 G
2480: 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
2490: 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 0d 0a 2d 31  1..----..-12..-1
24a0: 32 0d 0a 2d 31 32 0d 0a 0d 0a 71 75 65 72 79 20  2..-12....query 
24b0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
24c0: 54 20 41 4c 4c 20 2b 20 2d 20 63 6f 6c 30 20 2a  T ALL + - col0 *
24d0: 20 74 61 62 31 2e 63 6f 6c 30 20 46 52 4f 4d 20   tab1.col0 FROM 
24e0: 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
24f0: 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b1.col0..----..-
2500: 34 38 34 0d 0a 2d 36 37 32 34 0d 0a 2d 37 38 34  484..-6724..-784
2510: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2520: 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
2530: 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
2540: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2550: 61 62 65 6c 2d 37 30 0d 0a 53 45 4c 45 43 54 20  abel-70..SELECT 
2560: 44 49 53 54 49 4e 43 54 20 2b 20 43 41 53 54 28  DISTINCT + CAST(
2570: 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
2580: 29 20 2b 20 39 32 20 41 53 20 63 6f 6c 32 20 46  ) + 92 AS col2 F
2590: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
25a0: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
25b0: 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  ol0, cor0.col0..
25c0: 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  ----..NULL....sk
25d0: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
25e0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
25f0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2600: 65 6c 2d 37 30 0d 0a 53 45 4c 45 43 54 20 44 49  el-70..SELECT DI
2610: 53 54 49 4e 43 54 20 2b 20 43 41 53 54 20 28 20  STINCT + CAST ( 
2620: 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
2630: 29 20 2b 20 39 32 20 41 53 20 63 6f 6c 32 20 46  ) + 92 AS col2 F
2640: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
2650: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
2660: 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  ol0, cor0.col0..
2670: 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75  ----..NULL....qu
2680: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2690: 45 4c 45 43 54 20 34 34 20 2b 20 2d 20 63 6f 6c  ELECT 44 + - col
26a0: 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
26b0: 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c  or0 GROUP BY col
26c0: 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 37 0d 0a 34 34  1..----..-37..44
26d0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
26e0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  ort..SELECT + co
26f0: 72 30 2e 63 6f 6c 30 20 2a 20 35 37 20 46 52 4f  r0.col0 * 57 FRO
2700: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47  M tab0 AS cor0 G
2710: 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
2720: 30 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d  0, cor0.col2..--
2730: 2d 2d 0d 0a 31 34 38 32 0d 0a 32 34 35 31 0d 0a  --..1482..2451..
2740: 34 37 33 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20  4731....query I 
2750: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2760: 41 4c 4c 20 2b 20 28 20 2b 20 39 20 29 20 2b 20  ALL + ( + 9 ) + 
2770: 74 61 62 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c  tab0.col2 AS col
2780: 31 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55  1 FROM tab0 GROU
2790: 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a  P BY tab0.col2..
27a0: 2d 2d 2d 2d 0d 0a 33 33 0d 0a 34 37 0d 0a 38 38  ----..33..47..88
27b0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
27c0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
27d0: 2d 20 2d 20 37 36 20 2b 20 36 34 20 41 53 20 63  - - 76 + 64 AS c
27e0: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 47 52  ol2 FROM tab2 GR
27f0: 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31  OUP BY tab2.col1
2800: 0d 0a 2d 2d 2d 2d 0d 0a 31 34 30 0d 0a 31 34 30  ..----..140..140
2810: 0d 0a 31 34 30 0d 0a 0d 0a 71 75 65 72 79 20 49  ..140....query I
2820: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2830: 20 2b 20 2d 20 34 33 20 41 53 20 63 6f 6c 31 20   + - 43 AS col1 
2840: 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
2850: 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab0.col1..--
2860: 2d 2d 0d 0a 2d 34 33 0d 0a 2d 34 33 0d 0a 0d 0a  --..-43..-43....
2870: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2880: 0a 53 45 4c 45 43 54 20 33 37 20 41 53 20 63 6f  .SELECT 37 AS co
2890: 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f  l1 FROM tab0 GRO
28a0: 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d  UP BY tab0.col0.
28b0: 0a 2d 2d 2d 2d 0d 0a 33 37 0d 0a 33 37 0d 0a 33  .----..37..37..3
28c0: 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  7....query I row
28d0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 32 30 20  sort..SELECT 20 
28e0: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
28f0: 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
2900: 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 30 0d 0a  col0..----..20..
2910: 32 30 0d 0a 32 30 0d 0a 0d 0a 71 75 65 72 79 20  20..20....query 
2920: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2930: 54 20 2b 20 63 6f 72 30 2e 63 6f 6c 30 20 2a 20  T + cor0.col0 * 
2940: 2b 20 63 6f 72 30 2e 63 6f 6c 30 20 46 52 4f 4d  + cor0.col0 FROM
2950: 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47 52   tab2 AS cor0 GR
2960: 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30  OUP BY cor0.col0
2970: 0d 0a 2d 2d 2d 2d 0d 0a 32 32 35 0d 0a 38 32 38  ..----..225..828
2980: 31 0d 0a 38 34 36 34 0d 0a 0d 0a 71 75 65 72 79  1..8464....query
2990: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
29a0: 43 54 20 41 4c 4c 20 38 33 20 2a 20 63 6f 72 30  CT ALL 83 * cor0
29b0: 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20  .col2 FROM tab0 
29c0: 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
29d0: 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31  r0.col2..----..1
29e0: 39 39 32 0d 0a 33 31 35 34 0d 0a 36 35 35 37 0d  992..3154..6557.
29f0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2a00: 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 34 37 20  rt..SELECT + 47 
2a10: 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
2a20: 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d  BY tab2.col2..--
2a30: 2d 2d 0d 0a 34 37 0d 0a 34 37 0d 0a 34 37 0d 0a  --..47..47..47..
2a40: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2a50: 74 0d 0a 53 45 4c 45 43 54 20 28 20 38 39 20 29  t..SELECT ( 89 )
2a60: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
2a70: 62 31 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 32  b1 GROUP BY col2
2a80: 0d 0a 2d 2d 2d 2d 0d 0a 38 39 0d 0a 38 39 0d 0a  ..----..89..89..
2a90: 38 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  89....query I ro
2aa0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
2ab0: 53 54 49 4e 43 54 20 33 34 20 46 52 4f 4d 20 74  STINCT 34 FROM t
2ac0: 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab0 AS cor0 GROU
2ad0: 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 2c 20  P BY cor0.col2, 
2ae0: 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor0.col0..----.
2af0: 0a 33 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .34....onlyif my
2b00: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
2b10: 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
2b20: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2b30: 74 20 6c 61 62 65 6c 2d 38 33 0d 0a 53 45 4c 45  t label-83..SELE
2b40: 43 54 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20  CT - CAST( NULL 
2b50: 41 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d  AS SIGNED ) FROM
2b60: 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 63   tab1 GROUP BY c
2b70: 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ol1..----..NULL.
2b80: 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .NULL..NULL....s
2b90: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2ba0: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2bb0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2bc0: 62 65 6c 2d 38 33 0d 0a 53 45 4c 45 43 54 20 2d  bel-83..SELECT -
2bd0: 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
2be0: 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74  INTEGER ) FROM t
2bf0: 61 62 31 20 47 52 4f 55 50 20 42 59 20 63 6f 6c  ab1 GROUP BY col
2c00: 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  1..----..NULL..N
2c10: 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65  ULL..NULL....que
2c20: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2c30: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 37 39  LECT DISTINCT 79
2c40: 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20   FROM tab0 cor0 
2c50: 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 20  CROSS JOIN tab1 
2c60: 41 53 20 63 6f 72 31 20 47 52 4f 55 50 20 42 59  AS cor1 GROUP BY
2c70: 20 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 72 31   cor0.col2, cor1
2c80: 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 37 39 0d  .col0..----..79.
2c90: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2ca0: 72 74 0d 0a 53 45 4c 45 43 54 20 74 61 62 31 2e  rt..SELECT tab1.
2cb0: 63 6f 6c 30 20 2b 20 74 61 62 31 2e 63 6f 6c 30  col0 + tab1.col0
2cc0: 20 2a 20 2d 20 34 38 20 46 52 4f 4d 20 74 61 62   * - 48 FROM tab
2cd0: 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
2ce0: 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 33  col0..----..-103
2cf0: 34 0d 0a 2d 31 33 31 36 0d 0a 2d 33 38 35 34 0d  4..-1316..-3854.
2d00: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2d10: 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 36  rt..SELECT + - 6
2d20: 37 20 2b 20 2b 20 74 61 62 31 2e 63 6f 6c 30 20  7 + + tab1.col0 
2d30: 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20  FROM tab1 GROUP 
2d40: 42 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d  BY tab1.col0..--
2d50: 2d 2d 0d 0a 2d 33 39 0d 0a 2d 34 35 0d 0a 31 35  --..-39..-45..15
2d60: 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
2d70: 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
2d80: 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
2d90: 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
2da0: 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
2db0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2dc0: 4c 45 43 54 20 2b 20 74 61 62 31 2e 63 6f 6c 32  LECT + tab1.col2
2dd0: 20 2a 20 34 20 63 6f 6c 31 20 46 52 4f 4d 20 74   * 4 col1 FROM t
2de0: 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
2df0: 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 38  1.col2..----..18
2e00: 30 0d 0a 32 38 34 0d 0a 33 32 0d 0a 0d 0a 71 75  0..284..32....qu
2e10: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2e20: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
2e30: 20 63 6f 72 30 2e 63 6f 6c 32 20 2a 20 2d 20 63   cor0.col2 * - c
2e40: 6f 72 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61  or0.col2 FROM ta
2e50: 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b2 AS cor0 GROUP
2e60: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d   BY cor0.col2..-
2e70: 2d 2d 2d 0d 0a 33 33 36 34 0d 0a 36 32 34 31 0d  ---..3364..6241.
2e80: 0a 37 35 36 39 0d 0a 0d 0a 71 75 65 72 79 20 49  .7569....query I
2e90: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2ea0: 20 41 4c 4c 20 63 6f 72 30 2e 63 6f 6c 32 20 2b   ALL cor0.col2 +
2eb0: 20 2d 20 37 34 20 41 53 20 63 6f 6c 31 20 46 52   - 74 AS col1 FR
2ec0: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
2ed0: 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
2ee0: 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d  l1, cor0.col2..-
2ef0: 2d 2d 2d 0d 0a 2d 31 36 0d 0a 31 33 0d 0a 35 0d  ---..-16..13..5.
2f00: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2f10: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
2f20: 4e 43 54 20 2d 20 37 36 20 46 52 4f 4d 20 74 61  NCT - 76 FROM ta
2f30: 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b2 AS cor0 GROUP
2f40: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d   BY cor0.col0..-
2f50: 2d 2d 2d 0d 0a 2d 37 36 0d 0a 0d 0a 71 75 65 72  ---..-76....quer
2f60: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2f70: 45 43 54 20 44 49 53 54 49 4e 43 54 20 37 39 20  ECT DISTINCT 79 
2f80: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
2f90: 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
2fa0: 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d  BY cor0.col1..--
2fb0: 2d 2d 0d 0a 37 39 0d 0a 0d 0a 71 75 65 72 79 20  --..79....query 
2fc0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2fd0: 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 35  T DISTINCT - - 5
2fe0: 36 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  6 FROM tab1 GROU
2ff0: 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a  P BY tab1.col2..
3000: 2d 2d 2d 2d 0d 0a 35 36 0d 0a 0d 0a 71 75 65 72  ----..56....quer
3010: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
3020: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 36  ECT DISTINCT - 6
3030: 32 20 46 52 4f 4d 20 74 61 62 30 2c 20 74 61 62  2 FROM tab0, tab
3040: 30 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  0 cor0 GROUP BY 
3050: 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  cor0.col2..----.
3060: 0a 2d 36 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-62....query I 
3070: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
3080: 28 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 31  ( col1 ) AS col1
3090: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
30a0: 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
30b0: 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d  .col1..----..44.
30c0: 0a 35 37 0d 0a 36 0d 0a 0d 0a 71 75 65 72 79 20  .57..6....query 
30d0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
30e0: 54 20 41 4c 4c 20 2d 20 63 6f 72 31 2e 63 6f 6c  T ALL - cor1.col
30f0: 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  0 FROM tab0 AS c
3100: 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
3110: 61 62 30 20 41 53 20 63 6f 72 31 20 47 52 4f 55  ab0 AS cor1 GROU
3120: 50 20 42 59 20 63 6f 72 31 2e 63 6f 6c 30 0d 0a  P BY cor1.col0..
3130: 2d 2d 2d 2d 0d 0a 2d 32 36 0d 0a 2d 34 33 0d 0a  ----..-26..-43..
3140: 2d 38 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -83....query I r
3150: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
3160: 4c 4c 20 63 6f 72 30 2e 63 6f 6c 30 20 46 52 4f  LL cor0.col0 FRO
3170: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47  M tab0 AS cor0 G
3180: 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
3190: 30 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 32  0, col1..----..2
31a0: 36 0d 0a 34 33 0d 0a 38 33 0d 0a 0d 0a 73 6b 69  6..43..83....ski
31b0: 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
31c0: 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
31d0: 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
31e0: 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
31f0: 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
3200: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
3210: 4c 20 2b 20 74 61 62 30 2e 63 6f 6c 32 20 63 6f  L + tab0.col2 co
3220: 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f  l2 FROM tab0 GRO
3230: 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d  UP BY tab0.col2.
3240: 0a 2d 2d 2d 2d 0d 0a 32 34 0d 0a 33 38 0d 0a 37  .----..24..38..7
3250: 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
3260: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
3270: 20 2b 20 2d 20 39 35 20 46 52 4f 4d 20 74 61 62   + - 95 FROM tab
3280: 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
3290: 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 35 0d  col0..----..-95.
32a0: 0a 2d 39 35 0d 0a 2d 39 35 0d 0a 0d 0a 71 75 65  .-95..-95....que
32b0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
32c0: 4c 45 43 54 20 34 37 20 41 53 20 63 6f 6c 32 20  LECT 47 AS col2 
32d0: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
32e0: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
32f0: 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 37 0d 0a  col1..----..47..
3300: 34 37 0d 0a 34 37 0d 0a 0d 0a 71 75 65 72 79 20  47..47....query 
3310: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
3320: 54 20 32 37 20 2a 20 74 61 62 30 2e 63 6f 6c 30  T 27 * tab0.col0
3330: 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
3340: 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d   BY tab0.col0..-
3350: 2d 2d 2d 0d 0a 31 31 36 31 0d 0a 32 32 34 31 0d  ---..1161..2241.
3360: 0a 37 30 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .702....query I 
3370: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
3380: 28 20 38 20 29 20 2d 20 2d 20 38 33 20 46 52 4f  ( 8 ) - - 83 FRO
3390: 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
33a0: 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab0.col0..----.
33b0: 0a 39 31 0d 0a 39 31 0d 0a 39 31 0d 0a 0d 0a 71  .91..91..91....q
33c0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
33d0: 53 45 4c 45 43 54 20 2d 20 74 61 62 32 2e 63 6f  SELECT - tab2.co
33e0: 6c 30 20 2b 20 2d 20 33 38 20 41 53 20 63 6f 6c  l0 + - 38 AS col
33f0: 32 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  2 FROM tab2 GROU
3400: 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a  P BY tab2.col0..
3410: 2d 2d 2d 2d 0d 0a 2d 31 32 39 0d 0a 2d 31 33 30  ----..-129..-130
3420: 0d 0a 2d 35 33 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-53....query I
3430: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
3440: 20 2d 20 2d 20 35 36 20 46 52 4f 4d 20 74 61 62   - - 56 FROM tab
3450: 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
3460: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 35 36 0d 0a  col2..----..56..
3470: 35 36 0d 0a 35 36 0d 0a 0d 0a 71 75 65 72 79 20  56..56....query 
3480: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
3490: 54 20 44 49 53 54 49 4e 43 54 20 2d 20 37 35 20  T DISTINCT - 75 
34a0: 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
34b0: 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
34c0: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 35 0d  col2..----..-75.
34d0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
34e0: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
34f0: 4e 43 54 20 2b 20 38 31 20 41 53 20 63 6f 6c 30  NCT + 81 AS col0
3500: 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
3510: 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d   BY tab2.col2..-
3520: 2d 2d 2d 0d 0a 38 31 0d 0a 0d 0a 71 75 65 72 79  ---..81....query
3530: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
3540: 43 54 20 2d 20 74 61 62 32 2e 63 6f 6c 31 20 2d  CT - tab2.col1 -
3550: 20 32 39 20 46 52 4f 4d 20 74 61 62 32 20 47 52   29 FROM tab2 GR
3560: 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d  OUP BY col1..---
3570: 2d 0d 0a 2d 37 30 0d 0a 2d 38 38 0d 0a 2d 39 30  -..-70..-88..-90
3580: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
3590: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  ort..SELECT - co
35a0: 72 30 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20  r0.col0 AS col0 
35b0: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
35c0: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
35d0: 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d  col1, cor0.col0.
35e0: 0a 2d 2d 2d 2d 0d 0a 2d 32 36 0d 0a 2d 34 33 0d  .----..-26..-43.
35f0: 0a 2d 38 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-83....query I 
3600: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
3610: 2d 20 2b 20 31 30 20 41 53 20 63 6f 6c 31 20 46  - + 10 AS col1 F
3620: 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42  ROM tab2 GROUP B
3630: 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y tab2.col1..---
3640: 2d 0d 0a 2d 31 30 0d 0a 2d 31 30 0d 0a 2d 31 30  -..-10..-10..-10
3650: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
3660: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
3670: 39 35 20 2b 20 2d 20 34 39 20 41 53 20 63 6f 6c  95 + - 49 AS col
3680: 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
3690: 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
36a0: 61 62 32 20 41 53 20 63 6f 72 31 20 47 52 4f 55  ab2 AS cor1 GROU
36b0: 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  P BY cor0.col0..
36c0: 2d 2d 2d 2d 0d 0a 34 36 0d 0a 34 36 0d 0a 34 36  ----..46..46..46
36d0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
36e0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20  ort..SELECT - - 
36f0: 74 61 62 31 2e 63 6f 6c 30 20 41 53 20 63 6f 6c  tab1.col0 AS col
3700: 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  0 FROM tab1 GROU
3710: 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a  P BY tab1.col0..
3720: 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32 38 0d 0a 38 32  ----..22..28..82
3730: 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
3740: 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
3750: 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
3760: 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
3770: 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
3780: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
3790: 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20 63 6f 6c  LECT ALL - - col
37a0: 30 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  0 col0 FROM tab2
37b0: 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63   GROUP BY tab2.c
37c0: 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 39  ol0..----..15..9
37d0: 31 0d 0a 39 32 0d 0a 0d 0a 71 75 65 72 79 20 49  1..92....query I
37e0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
37f0: 20 44 49 53 54 49 4e 43 54 20 36 30 20 46 52 4f   DISTINCT 60 FRO
3800: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
3810: 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
3820: 30 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d  0, cor0.col2..--
3830: 2d 2d 0d 0a 36 30 0d 0a 0d 0a 71 75 65 72 79 20  --..60....query 
3840: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
3850: 54 20 41 4c 4c 20 63 6f 72 30 2e 63 6f 6c 32 20  T ALL cor0.col2 
3860: 2d 20 2d 20 38 38 20 2a 20 63 6f 72 30 2e 63 6f  - - 88 * cor0.co
3870: 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
3880: 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
3890: 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32  r0.col2..----..2
38a0: 31 33 36 0d 0a 33 33 38 32 0d 0a 37 30 33 31 0d  136..3382..7031.
38b0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
38c0: 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e  rt..SELECT cor0.
38d0: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41  col1 FROM tab1 A
38e0: 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
38f0: 63 6f 6c 30 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d  col0, col1..----
3900: 0d 0a 34 34 0d 0a 35 37 0d 0a 36 0d 0a 0d 0a 6f  ..44..57..6....o
3910: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
3920: 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
3930: 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
3940: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
3950: 31 31 35 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32  115..SELECT col2
3960: 20 44 49 56 20 38 33 20 63 6f 6c 32 20 46 52 4f   DIV 83 col2 FRO
3970: 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
3980: 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  tab0.col2..----.
3990: 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .0..0..0....skip
39a0: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
39b0: 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
39c0: 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
39d0: 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
39e0: 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
39f0: 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
3a00: 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
3a10: 6f 72 74 20 6c 61 62 65 6c 2d 31 31 35 0d 0a 53  ort label-115..S
3a20: 45 4c 45 43 54 20 63 6f 6c 32 20 2f 20 38 33 20  ELECT col2 / 83 
3a30: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47  col2 FROM tab0 G
3a40: 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c  ROUP BY tab0.col
3a50: 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30  2..----..0..0..0
3a60: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
3a70: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
3a80: 49 4e 43 54 20 74 61 62 31 2e 63 6f 6c 32 20 2b  INCT tab1.col2 +
3a90: 20 2d 20 34 37 20 2a 20 2b 20 37 30 20 46 52 4f   - 47 * + 70 FRO
3aa0: 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
3ab0: 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  tab1.col2..----.
3ac0: 0a 2d 33 32 31 39 0d 0a 2d 33 32 34 35 0d 0a 2d  .-3219..-3245..-
3ad0: 33 32 38 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  3282....onlyif m
3ae0: 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
3af0: 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
3b00: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
3b10: 72 74 20 6c 61 62 65 6c 2d 31 31 37 0d 0a 53 45  rt label-117..SE
3b20: 4c 45 43 54 20 63 6f 6c 30 20 44 49 56 20 35 37  LECT col0 DIV 57
3b30: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
3b40: 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
3b50: 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a  .col0..----..0..
3b60: 30 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  0..1....skipif m
3b70: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
3b80: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
3b90: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 37  owsort label-117
3ba0: 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 2f 20  ..SELECT col0 / 
3bb0: 35 37 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  57 FROM tab1 AS 
3bc0: 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
3bd0: 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30  r0.col0..----..0
3be0: 0d 0a 30 0d 0a 31 0d 0a 0d 0a 71 75 65 72 79 20  ..0..1....query 
3bf0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
3c00: 54 20 2d 20 63 6f 72 30 2e 63 6f 6c 30 20 2b 20  T - cor0.col0 + 
3c10: 63 6f 72 30 2e 63 6f 6c 30 20 2a 20 63 6f 72 30  cor0.col0 * cor0
3c20: 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20  .col0 FROM tab1 
3c30: 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
3c40: 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30   cor0.col0, cor0
3c50: 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 34 36 32  .col0..----..462
3c60: 0d 0a 36 36 34 32 0d 0a 37 35 36 0d 0a 0d 0a 71  ..6642..756....q
3c70: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
3c80: 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c  SELECT ALL + col
3c90: 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  0 AS col1 FROM t
3ca0: 61 62 32 20 47 52 4f 55 50 20 42 59 20 63 6f 6c  ab2 GROUP BY col
3cb0: 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 39 31 0d  0..----..15..91.
3cc0: 0a 39 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .92....onlyif my
3cd0: 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
3ce0: 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
3cf0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
3d00: 74 20 6c 61 62 65 6c 2d 31 32 30 0d 0a 53 45 4c  t label-120..SEL
3d10: 45 43 54 20 2d 20 37 33 20 44 49 56 20 2b 20 63  ECT - 73 DIV + c
3d20: 6f 72 30 2e 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c  or0.col0 + + col
3d30: 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  0 AS col0 FROM t
3d40: 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
3d50: 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  P BY cor0.col0..
3d60: 2d 2d 2d 2d 0d 0a 31 31 0d 0a 39 31 0d 0a 39 32  ----..11..91..92
3d70: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
3d80: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
3d90: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
3da0: 72 74 20 6c 61 62 65 6c 2d 31 32 30 0d 0a 53 45  rt label-120..SE
3db0: 4c 45 43 54 20 2d 20 37 33 20 2f 20 2b 20 63 6f  LECT - 73 / + co
3dc0: 72 30 2e 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 30  r0.col0 + + col0
3dd0: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
3de0: 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b2 AS cor0 GROUP
3df0: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d   BY cor0.col0..-
3e00: 2d 2d 2d 0d 0a 31 31 0d 0a 39 31 0d 0a 39 32 0d  ---..11..91..92.
3e10: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
3e20: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
3e30: 4e 43 54 20 2b 20 33 35 20 41 53 20 63 6f 6c 32  NCT + 35 AS col2
3e40: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
3e50: 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
3e60: 62 32 20 41 53 20 63 6f 72 31 20 47 52 4f 55 50  b2 AS cor1 GROUP
3e70: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d   BY cor0.col1..-
3e80: 2d 2d 2d 0d 0a 33 35 0d 0a 0d 0a 73 6b 69 70 69  ---..35....skipi
3e90: 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
3ea0: 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
3eb0: 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
3ec0: 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
3ed0: 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
3ee0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
3ef0: 2b 20 34 37 20 2b 20 2b 20 63 6f 6c 30 20 63 6f  + 47 + + col0 co
3f00: 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  l1 FROM tab2 cor
3f10: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
3f20: 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 33 38 0d  col0..----..138.
3f30: 0a 31 33 39 0d 0a 36 32 0d 0a 0d 0a 71 75 65 72  .139..62....quer
3f40: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
3f50: 45 43 54 20 41 4c 4c 20 2d 20 74 61 62 31 2e 63  ECT ALL - tab1.c
3f60: 6f 6c 30 20 2a 20 74 61 62 31 2e 63 6f 6c 30 20  ol0 * tab1.col0 
3f70: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
3f80: 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
3f90: 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 38 34  col0..----..-484
3fa0: 0d 0a 2d 36 37 32 34 0d 0a 2d 37 38 34 0d 0a 0d  ..-6724..-784...
3fb0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
3fc0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
3fd0: 54 20 2b 20 38 35 20 41 53 20 63 6f 6c 32 20 46  T + 85 AS col2 F
3fe0: 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
3ff0: 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab1.col2..---
4000: 2d 0d 0a 38 35 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..85....skipif 
4010: 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
4020: 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
4030: 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
4040: 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
4050: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
4060: 74 0d 0a 53 45 4c 45 43 54 20 2d 20 34 33 20 63  t..SELECT - 43 c
4070: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol2 FROM tab0 AS
4080: 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
4090: 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  or0.col0..----..
40a0: 2d 34 33 0d 0a 2d 34 33 0d 0a 2d 34 33 0d 0a 0d  -43..-43..-43...
40b0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
40c0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
40d0: 54 20 2d 20 2d 20 38 38 20 46 52 4f 4d 20 74 61  T - - 88 FROM ta
40e0: 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32  b2 GROUP BY tab2
40f0: 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 38 38 0d  .col0..----..88.
4100: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
4110: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
4120: 4e 43 54 20 28 20 34 37 20 29 20 46 52 4f 4d 20  NCT ( 47 ) FROM 
4130: 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f  tab0 AS cor0 GRO
4140: 55 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d  UP BY col0..----
4150: 0d 0a 34 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..47....query I 
4160: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
4170: 2b 20 35 37 20 46 52 4f 4d 20 74 61 62 32 20 47  + 57 FROM tab2 G
4180: 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
4190: 32 0d 0a 2d 2d 2d 2d 0d 0a 35 37 0d 0a 35 37 0d  2..----..57..57.
41a0: 0a 35 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .57....query I r
41b0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
41c0: 4c 4c 20 2b 20 37 36 20 2a 20 2b 20 37 39 20 46  LL + 76 * + 79 F
41d0: 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42  ROM tab0 GROUP B
41e0: 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y tab0.col1..---
41f0: 2d 0d 0a 36 30 30 34 0d 0a 36 30 30 34 0d 0a 0d  -..6004..6004...
4200: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
4210: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
4220: 54 20 34 30 20 41 53 20 63 6f 6c 30 20 46 52 4f  T 40 AS col0 FRO
4230: 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
4240: 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab2.col1..----.
4250: 0a 34 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .40....query I r
4260: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
4270: 49 53 54 49 4e 43 54 20 2b 20 32 36 20 2b 20 2b  ISTINCT + 26 + +
4280: 20 31 39 20 46 52 4f 4d 20 74 61 62 30 20 47 52   19 FROM tab0 GR
4290: 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30  OUP BY tab0.col0
42a0: 0d 0a 2d 2d 2d 2d 0d 0a 34 35 0d 0a 0d 0a 71 75  ..----..45....qu
42b0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
42c0: 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 31  ELECT ALL + col1
42d0: 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 20   FROM tab1 cor0 
42e0: 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
42f0: 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d 0a 35 37  l1..----..44..57
4300: 0d 0a 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..6....query I r
4310: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
4320: 49 53 54 49 4e 43 54 20 37 33 20 2a 20 63 6f 6c  ISTINCT 73 * col
4330: 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  0 AS col2 FROM t
4340: 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
4350: 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  P BY cor0.col0..
4360: 2d 2d 2d 2d 0d 0a 31 30 39 35 0d 0a 36 36 34 33  ----..1095..6643
4370: 0d 0a 36 37 31 36 0d 0a 0d 0a 71 75 65 72 79 20  ..6716....query 
4380: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
4390: 54 20 37 32 20 46 52 4f 4d 20 74 61 62 32 20 41  T 72 FROM tab2 A
43a0: 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
43b0: 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e  cor0.col1, cor0.
43c0: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 37 32 0d 0a  col2..----..72..
43d0: 37 32 0d 0a 37 32 0d 0a 0d 0a 71 75 65 72 79 20  72..72....query 
43e0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
43f0: 54 20 2d 20 32 37 20 46 52 4f 4d 20 74 61 62 30  T - 27 FROM tab0
4400: 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
4410: 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37 0d 0a  ol0..----..-27..
4420: 2d 32 37 0d 0a 2d 32 37 0d 0a 0d 0a 71 75 65 72  -27..-27....quer
4430: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
4440: 45 43 54 20 2d 20 36 37 20 41 53 20 63 6f 6c 31  ECT - 67 AS col1
4450: 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
4460: 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d   BY tab2.col0..-
4470: 2d 2d 2d 0d 0a 2d 36 37 0d 0a 2d 36 37 0d 0a 2d  ---..-67..-67..-
4480: 36 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  67....query I ro
4490: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
44a0: 4c 20 2d 20 35 32 20 41 53 20 63 6f 6c 31 20 46  L - 52 AS col1 F
44b0: 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42  ROM tab0 GROUP B
44c0: 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y tab0.col1..---
44d0: 2d 0d 0a 2d 35 32 0d 0a 2d 35 32 0d 0a 0d 0a 71  -..-52..-52....q
44e0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
44f0: 53 45 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c 31  SELECT cor0.col1
4500: 20 2b 20 2b 20 35 32 20 41 53 20 63 6f 6c 30 20   + + 52 AS col0 
4510: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
4520: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 32 2c  0 GROUP BY col2,
4530: 20 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 31   col1, cor0.col1
4540: 0d 0a 2d 2d 2d 2d 0d 0a 31 33 33 0d 0a 35 32 0d  ..----..133..52.
4550: 0a 35 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .52....query I r
4560: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
4570: 4c 4c 20 43 41 53 45 20 39 36 20 57 48 45 4e 20  LL CASE 96 WHEN 
4580: 74 61 62 32 2e 63 6f 6c 32 20 2b 20 2d 20 74 61  tab2.col2 + - ta
4590: 62 32 2e 63 6f 6c 32 20 2a 20 2d 20 33 31 20 54  b2.col2 * - 31 T
45a0: 48 45 4e 20 74 61 62 32 2e 63 6f 6c 32 20 45 4e  HEN tab2.col2 EN
45b0: 44 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  D FROM tab2 GROU
45c0: 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a  P BY tab2.col2..
45d0: 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
45e0: 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20  ..NULL....query 
45f0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
4600: 54 20 41 4c 4c 20 2d 20 63 6f 72 30 2e 63 6f 6c  T ALL - cor0.col
4610: 30 20 2b 20 63 6f 72 30 2e 63 6f 6c 32 20 2a 20  0 + cor0.col2 * 
4620: 28 20 2d 20 63 6f 72 30 2e 63 6f 6c 30 20 29 20  ( - cor0.col0 ) 
4630: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
4640: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
4650: 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d  col0, cor0.col2.
4660: 0a 2d 2d 2d 2d 0d 0a 2d 31 33 32 30 0d 0a 2d 35  .----..-1320..-5
4670: 34 32 38 0d 0a 2d 37 32 38 30 0d 0a 0d 0a 71 75  428..-7280....qu
4680: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
4690: 45 4c 45 43 54 20 2d 20 32 35 20 2a 20 2d 20 38  ELECT - 25 * - 8
46a0: 36 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  6 FROM tab1 AS c
46b0: 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
46c0: 61 62 32 20 41 53 20 63 6f 72 31 20 47 52 4f 55  ab2 AS cor1 GROU
46d0: 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 2c 20  P BY cor0.col2, 
46e0: 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  cor0.col2..----.
46f0: 0a 32 31 35 30 0d 0a 32 31 35 30 0d 0a 32 31 35  .2150..2150..215
4700: 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
4710: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 34  sort..SELECT - 4
4720: 30 20 2b 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20  0 + + col1 FROM 
4730: 74 61 62 30 20 63 6f 72 30 20 47 52 4f 55 50 20  tab0 cor0 GROUP 
4740: 42 59 20 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f  BY col0, cor0.co
4750: 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 30 0d 0a 2d  l1..----..-40..-
4760: 34 30 0d 0a 34 31 0d 0a 0d 0a 71 75 65 72 79 20  40..41....query 
4770: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
4780: 54 20 36 32 20 2b 20 63 6f 72 30 2e 63 6f 6c 31  T 62 + cor0.col1
4790: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
47a0: 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
47b0: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d   BY cor0.col1..-
47c0: 2d 2d 2d 0d 0a 31 34 33 0d 0a 36 32 0d 0a 0d 0a  ---..143..62....
47d0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
47e0: 0a 53 45 4c 45 43 54 20 2d 20 63 6f 72 30 2e 63  .SELECT - cor0.c
47f0: 6f 6c 32 20 2d 20 63 6f 72 30 2e 63 6f 6c 31 20  ol2 - cor0.col1 
4800: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
4810: 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
4820: 42 59 20 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f  BY col1, cor0.co
4830: 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 32 0d 0a  l2..----..-102..
4840: 2d 31 31 35 0d 0a 2d 31 34 0d 0a 0d 0a 71 75 65  -115..-14....que
4850: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
4860: 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c 30 20 41  LECT cor0.col0 A
4870: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
4880: 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a   AS cor0 CROSS J
4890: 4f 49 4e 20 74 61 62 30 20 63 6f 72 31 20 47 52  OIN tab0 cor1 GR
48a0: 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30  OUP BY cor0.col0
48b0: 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32 38 0d 0a  ..----..22..28..
48c0: 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  82....query I ro
48d0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
48e0: 4c 20 2b 20 37 33 20 46 52 4f 4d 20 74 61 62 30  L + 73 FROM tab0
48f0: 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
4900: 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y cor0.col2..---
4910: 2d 0d 0a 37 33 0d 0a 37 33 0d 0a 37 33 0d 0a 0d  -..73..73..73...
4920: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
4930: 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 39 38 20  ..SELECT + + 98 
4940: 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
4950: 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab2.col1..--
4960: 2d 2d 0d 0a 39 38 0d 0a 39 38 0d 0a 39 38 0d 0a  --..98..98..98..
4970: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
4980: 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
4990: 43 54 20 2d 20 37 39 20 46 52 4f 4d 20 74 61 62  CT - 79 FROM tab
49a0: 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  0 AS cor0 GROUP 
49b0: 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  BY cor0.col0..--
49c0: 2d 2d 0d 0a 2d 37 39 0d 0a 0d 0a 73 6b 69 70 69  --..-79....skipi
49d0: 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
49e0: 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
49f0: 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
4a00: 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
4a10: 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
4a20: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
4a30: 49 4e 43 54 20 2d 20 2b 20 74 61 62 31 2e 63 6f  INCT - + tab1.co
4a40: 6c 32 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  l2 col1 FROM tab
4a50: 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
4a60: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 35 0d  col2..----..-45.
4a70: 0a 2d 37 31 0d 0a 2d 38 0d 0a 0d 0a 71 75 65 72  .-71..-8....quer
4a80: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
4a90: 45 43 54 20 2b 20 2b 20 31 30 20 46 52 4f 4d 20  ECT + + 10 FROM 
4aa0: 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61  tab0 GROUP BY ta
4ab0: 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31  b0.col0..----..1
4ac0: 30 0d 0a 31 30 0d 0a 31 30 0d 0a 0d 0a 71 75 65  0..10..10....que
4ad0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
4ae0: 4c 45 43 54 20 74 61 62 31 2e 63 6f 6c 32 20 2b  LECT tab1.col2 +
4af0: 20 2b 20 74 61 62 31 2e 63 6f 6c 32 20 46 52 4f   + tab1.col2 FRO
4b00: 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
4b10: 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  tab1.col2..----.
4b20: 0a 31 34 32 0d 0a 31 36 0d 0a 39 30 0d 0a 0d 0a  .142..16..90....
4b30: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
4b40: 0a 53 45 4c 45 43 54 20 2d 20 74 61 62 32 2e 63  .SELECT - tab2.c
4b50: 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol1 AS col0 FROM
4b60: 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74   tab2 GROUP BY t
4b70: 61 62 32 2e 63 6f 6c 31 20 48 41 56 49 4e 47 20  ab2.col1 HAVING 
4b80: 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c  NOT NULL IS NULL
4b90: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
4ba0: 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
4bb0: 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
4bc0: 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
4bd0: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 35 33 0d 0a  sort label-153..
4be0: 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30 20 44 49  SELECT + col0 DI
4bf0: 56 20 2d 20 74 61 62 30 2e 63 6f 6c 30 20 41 53  V - tab0.col0 AS
4c00: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
4c10: 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f  GROUP BY tab0.co
4c20: 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31  l0..----..-1..-1
4c30: 0d 0a 2d 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..-1....skipif m
4c40: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
4c50: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
4c60: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 35 33  owsort label-153
4c70: 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30 20  ..SELECT + col0 
4c80: 2f 20 2d 20 74 61 62 30 2e 63 6f 6c 30 20 41 53  / - tab0.col0 AS
4c90: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
4ca0: 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f  GROUP BY tab0.co
4cb0: 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31  l0..----..-1..-1
4cc0: 0d 0a 2d 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..-1....query I 
4cd0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
4ce0: 2b 20 74 61 62 30 2e 63 6f 6c 32 20 2a 20 2d 20  + tab0.col2 * - 
4cf0: 74 61 62 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74  tab0.col2 FROM t
4d00: 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab0 GROUP BY tab
4d10: 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  0.col2..----..-1
4d20: 34 34 34 0d 0a 2d 35 37 36 0d 0a 2d 36 32 34 31  444..-576..-6241
4d30: 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
4d40: 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
4d50: 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
4d60: 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
4d70: 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
4d80: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
4d90: 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c 32 20 63  LECT cor0.col2 c
4da0: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
4db0: 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
4dc0: 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63  or0.col0, cor0.c
4dd0: 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 35 38 0d 0a 37  ol2..----..58..7
4de0: 39 0d 0a 38 37 0d 0a 0d 0a 71 75 65 72 79 20 49  9..87....query I
4df0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
4e00: 20 41 4c 4c 20 63 6f 6c 32 20 2a 20 2d 20 32 34   ALL col2 * - 24
4e10: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
4e20: 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
4e30: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 2c 20 63   BY cor0.col2, c
4e40: 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  or0.col0..----..
4e50: 2d 31 38 39 36 0d 0a 2d 35 37 36 0d 0a 2d 39 31  -1896..-576..-91
4e60: 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
4e70: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
4e80: 54 49 4e 43 54 20 2b 20 2b 20 37 34 20 41 53 20  TINCT + + 74 AS 
4e90: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 47  col0 FROM tab0 G
4ea0: 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c  ROUP BY tab0.col
4eb0: 30 0d 0a 2d 2d 2d 2d 0d 0a 37 34 0d 0a 0d 0a 71  0..----..74....q
4ec0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
4ed0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
4ee0: 63 6f 72 30 2e 63 6f 6c 30 20 46 52 4f 4d 20 74  cor0.col0 FROM t
4ef0: 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab1 AS cor0 GROU
4f00: 50 20 42 59 20 63 6f 6c 30 2c 20 63 6f 6c 31 0d  P BY col0, col1.
4f10: 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32 38 0d 0a 38  .----..22..28..8
4f20: 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
4f30: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 31  sort..SELECT + 1
4f40: 30 20 2b 20 2d 20 37 37 20 46 52 4f 4d 20 74 61  0 + - 77 FROM ta
4f50: 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32  b2 GROUP BY tab2
4f60: 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 37  .col0..----..-67
4f70: 0d 0a 2d 36 37 0d 0a 2d 36 37 0d 0a 0d 0a 6f 6e  ..-67..-67....on
4f80: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
4f90: 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
4fa0: 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
4fb0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
4fc0: 36 30 0d 0a 53 45 4c 45 43 54 20 2d 20 35 36 20  60..SELECT - 56 
4fd0: 44 49 56 20 2d 20 33 36 20 41 53 20 63 6f 6c 31  DIV - 36 AS col1
4fe0: 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50   FROM tab1 GROUP
4ff0: 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d   BY tab1.col1..-
5000: 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a  ---..1..1..1....
5010: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
5020: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
5030: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
5040: 61 62 65 6c 2d 31 36 30 0d 0a 53 45 4c 45 43 54  abel-160..SELECT
5050: 20 2d 20 35 36 20 2f 20 2d 20 33 36 20 41 53 20   - 56 / - 36 AS 
5060: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 47  col1 FROM tab1 G
5070: 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
5080: 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31  1..----..1..1..1
5090: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
50a0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
50b0: 49 4e 43 54 20 2d 20 35 30 20 46 52 4f 4d 20 74  INCT - 50 FROM t
50c0: 61 62 31 20 63 6f 72 30 20 47 52 4f 55 50 20 42  ab1 cor0 GROUP B
50d0: 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y cor0.col1..---
50e0: 2d 0d 0a 2d 35 30 0d 0a 0d 0a 71 75 65 72 79 20  -..-50....query 
50f0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
5100: 54 20 63 6f 72 30 2e 63 6f 6c 32 20 2a 20 2d 20  T cor0.col2 * - 
5110: 63 6f 72 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74  cor0.col2 FROM t
5120: 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab1 AS cor0 GROU
5130: 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 2c 20  P BY cor0.col2, 
5140: 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 32  col0..----..-202
5150: 35 0d 0a 2d 35 30 34 31 0d 0a 2d 36 34 0d 0a 0d  5..-5041..-64...
5160: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
5170: 0d 0a 53 45 4c 45 43 54 20 2b 20 39 20 2a 20 74  ..SELECT + 9 * t
5180: 61 62 32 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61  ab2.col2 FROM ta
5190: 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32  b2 GROUP BY tab2
51a0: 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 35 32 32  .col2..----..522
51b0: 0d 0a 37 31 31 0d 0a 37 38 33 0d 0a 0d 0a 71 75  ..711..783....qu
51c0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
51d0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 31  ELECT DISTINCT 1
51e0: 36 20 2a 20 2b 20 38 39 20 41 53 20 63 6f 6c 31  6 * + 89 AS col1
51f0: 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
5200: 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d   BY tab0.col0..-
5210: 2d 2d 2d 0d 0a 31 34 32 34 0d 0a 0d 0a 71 75 65  ---..1424....que
5220: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
5230: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
5240: 33 33 20 2b 20 2b 20 63 6f 6c 30 20 46 52 4f 4d  33 + + col0 FROM
5250: 20 74 61 62 32 20 63 6f 72 30 20 47 52 4f 55 50   tab2 cor0 GROUP
5260: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d   BY cor0.col0..-
5270: 2d 2d 2d 0d 0a 31 32 34 0d 0a 31 32 35 0d 0a 34  ---..124..125..4
5280: 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  8....skipif post
5290: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
52a0: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
52b0: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
52c0: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
52d0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
52e0: 45 4c 45 43 54 20 2b 20 32 38 20 63 6f 6c 32 20  ELECT + 28 col2 
52f0: 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 47  FROM tab2 cor0 G
5300: 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
5310: 30 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d  0, cor0.col2..--
5320: 2d 2d 0d 0a 32 38 0d 0a 32 38 0d 0a 32 38 0d 0a  --..28..28..28..
5330: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
5340: 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
5350: 43 54 20 2d 20 39 38 20 2b 20 2d 20 30 20 41 53  CT - 98 + - 0 AS
5360: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
5370: 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
5380: 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   cor0.col1..----
5390: 0d 0a 2d 39 38 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-98....query I
53a0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
53b0: 20 63 6f 72 30 2e 63 6f 6c 31 20 2a 20 34 38 20   cor0.col1 * 48 
53c0: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
53d0: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d  0 GROUP BY col1.
53e0: 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 33 38 38 38 0d 0a  .----..0..3888..
53f0: 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
5400: 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
5410: 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
5420: 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
5430: 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
5440: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
5450: 43 54 20 2d 20 74 61 62 32 2e 63 6f 6c 32 20 63  CT - tab2.col2 c
5460: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52  ol0 FROM tab2 GR
5470: 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 32  OUP BY tab2.col2
5480: 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 38 0d 0a 2d 37 39  ..----..-58..-79
5490: 0d 0a 2d 38 37 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-87....query I
54a0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
54b0: 20 63 6f 72 30 2e 63 6f 6c 30 20 46 52 4f 4d 20   cor0.col0 FROM 
54c0: 74 61 62 30 20 41 53 20 63 6f 72 30 20 43 52 4f  tab0 AS cor0 CRO
54d0: 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53 20  SS JOIN tab1 AS 
54e0: 63 6f 72 31 20 47 52 4f 55 50 20 42 59 20 63 6f  cor1 GROUP BY co
54f0: 72 31 2e 63 6f 6c 32 2c 20 63 6f 72 31 2e 63 6f  r1.col2, cor1.co
5500: 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d  l2, cor0.col0..-
5510: 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
5520: 73 68 69 6e 67 20 74 6f 20 35 35 39 64 61 38 66  shing to 559da8f
5530: 34 35 34 63 34 65 35 35 39 39 62 38 37 33 31 39  454c4e5599b87319
5540: 36 34 31 61 34 66 34 39 61 0d 0a 0d 0a 73 6b 69  641a4f49a....ski
5550: 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
5560: 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
5570: 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
5580: 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
5590: 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
55a0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
55b0: 4c 20 2b 20 2b 20 63 6f 6c 31 20 2d 20 2d 20 35  L + + col1 - - 5
55c0: 33 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  3 col0 FROM tab0
55d0: 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
55e0: 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 33 34 0d 0a  ol1..----..134..
55f0: 35 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  53....query I ro
5600: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
5610: 4c 20 2b 20 2b 20 74 61 62 32 2e 63 6f 6c 31 20  L + + tab2.col1 
5620: 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
5630: 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab2.col1..--
5640: 2d 2d 0d 0a 34 31 0d 0a 35 39 0d 0a 36 31 0d 0a  --..41..59..61..
5650: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
5660: 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 32  t..SELECT - col2
5670: 20 2b 20 74 61 62 31 2e 63 6f 6c 32 20 46 52 4f   + tab1.col2 FRO
5680: 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
5690: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30  col2..----..0..0
56a0: 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..0....query I r
56b0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
56c0: 20 36 34 20 46 52 4f 4d 20 74 61 62 32 20 47 52   64 FROM tab2 GR
56d0: 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31  OUP BY tab2.col1
56e0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 34 0d 0a 2d 36 34  ..----..-64..-64
56f0: 0d 0a 2d 36 34 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-64....query I
5700: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
5710: 20 41 4c 4c 20 31 36 20 46 52 4f 4d 20 74 61 62   ALL 16 FROM tab
5720: 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
5730: 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36 0d 0a  col0..----..16..
5740: 31 36 0d 0a 31 36 0d 0a 0d 0a 71 75 65 72 79 20  16..16....query 
5750: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
5760: 54 20 41 4c 4c 20 38 33 20 2b 20 2b 20 35 36 20  T ALL 83 + + 56 
5770: 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
5780: 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d  BY tab0.col0..--
5790: 2d 2d 0d 0a 31 33 39 0d 0a 31 33 39 0d 0a 31 33  --..139..139..13
57a0: 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
57b0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 34  sort..SELECT - 4
57c0: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
57d0: 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
57e0: 2e 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 30  .col2, cor0.col0
57f0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 0d 0a 2d 34 0d 0a  ..----..-4..-4..
5800: 2d 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  -4....query I ro
5810: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
5820: 30 20 2d 20 43 41 53 45 20 63 6f 72 30 2e 63 6f  0 - CASE cor0.co
5830: 6c 30 20 57 48 45 4e 20 63 6f 72 30 2e 63 6f 6c  l0 WHEN cor0.col
5840: 30 20 2a 20 63 6f 72 30 2e 63 6f 6c 30 20 54 48  0 * cor0.col0 TH
5850: 45 4e 20 2b 20 63 6f 72 30 2e 63 6f 6c 30 20 45  EN + cor0.col0 E
5860: 4c 53 45 20 2d 20 63 6f 72 30 2e 63 6f 6c 30 20  LSE - cor0.col0 
5870: 45 4e 44 20 46 52 4f 4d 20 74 61 62 30 20 41 53  END FROM tab0 AS
5880: 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
5890: 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 72 30 2e 63  or0.col2, cor0.c
58a0: 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 36 0d 0a 34  ol0..----..26..4
58b0: 33 0d 0a 38 33 0d 0a 0d 0a 71 75 65 72 79 20 49  3..83....query I
58c0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
58d0: 20 44 49 53 54 49 4e 43 54 20 28 20 31 37 20 29   DISTINCT ( 17 )
58e0: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
58f0: 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
5900: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d   BY cor0.col1..-
5910: 2d 2d 2d 0d 0a 31 37 0d 0a 0d 0a 71 75 65 72 79  ---..17....query
5920: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
5930: 43 54 20 2b 20 74 61 62 32 2e 63 6f 6c 31 20 41  CT + tab2.col1 A
5940: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
5950: 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63   GROUP BY tab2.c
5960: 6f 6c 31 20 48 41 56 49 4e 47 20 28 20 4e 55 4c  ol1 HAVING ( NUL
5970: 4c 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  L ) IS NULL..---
5980: 2d 0d 0a 34 31 0d 0a 35 39 0d 0a 36 31 0d 0a 0d  -..41..59..61...
5990: 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
59a0: 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
59b0: 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
59c0: 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
59d0: 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
59e0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
59f0: 54 20 33 36 20 63 6f 6c 32 20 46 52 4f 4d 20 74  T 36 col2 FROM t
5a00: 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab0 AS cor0 GROU
5a10: 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  P BY cor0.col0..
5a20: 2d 2d 2d 2d 0d 0a 33 36 0d 0a 33 36 0d 0a 33 36  ----..36..36..36
5a30: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
5a40: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
5a50: 49 4e 43 54 20 32 39 20 2b 20 63 6f 72 30 2e 63  INCT 29 + cor0.c
5a60: 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol2 AS col0 FROM
5a70: 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47 52   tab2 AS cor0 GR
5a80: 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32  OUP BY cor0.col2
5a90: 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  , cor0.col2..---
5aa0: 2d 0d 0a 31 30 38 0d 0a 31 31 36 0d 0a 38 37 0d  -..108..116..87.
5ab0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
5ac0: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
5ad0: 4e 43 54 20 2b 20 39 32 20 46 52 4f 4d 20 74 61  NCT + 92 FROM ta
5ae0: 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31  b1 GROUP BY tab1
5af0: 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 39 32 0d  .col2..----..92.
5b00: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
5b10: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
5b20: 4e 43 54 20 2d 20 2b 20 63 6f 6c 32 20 41 53 20  NCT - + col2 AS 
5b30: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 47  col2 FROM tab2 G
5b40: 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
5b50: 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 38 0d 0a 2d 37  2..----..-58..-7
5b60: 39 0d 0a 2d 38 37 0d 0a 0d 0a 71 75 65 72 79 20  9..-87....query 
5b70: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
5b80: 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 72  T DISTINCT + cor
5b90: 30 2e 63 6f 6c 32 20 2b 20 2b 20 63 6f 72 30 2e  0.col2 + + cor0.
5ba0: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
5bb0: 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
5bc0: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 31 36 0d  col2..----..116.
5bd0: 0a 31 35 38 0d 0a 31 37 34 0d 0a 0d 0a 71 75 65  .158..174....que
5be0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
5bf0: 4c 45 43 54 20 2b 20 38 39 20 41 53 20 63 6f 6c  LECT + 89 AS col
5c00: 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  2 FROM tab2 cor0
5c10: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
5c20: 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 38 39 0d 0a 38  ol0..----..89..8
5c30: 39 0d 0a 38 39 0d 0a 0d 0a 71 75 65 72 79 20 49  9..89....query I
5c40: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
5c50: 20 44 49 53 54 49 4e 43 54 20 2b 20 37 38 20 2b   DISTINCT + 78 +
5c60: 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 46 52 4f   + cor0.col1 FRO
5c70: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
5c80: 52 4f 55 50 20 42 59 20 63 6f 6c 30 2c 20 63 6f  ROUP BY col0, co
5c90: 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31  r0.col1..----..1
5ca0: 31 39 0d 0a 31 33 37 0d 0a 31 33 39 0d 0a 0d 0a  19..137..139....
5cb0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
5cc0: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 35 38 20 41  .SELECT ALL 58 A
5cd0: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
5ce0: 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a   AS cor0 CROSS J
5cf0: 4f 49 4e 20 74 61 62 32 20 41 53 20 63 6f 72 31  OIN tab2 AS cor1
5d00: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 31 2e 63   GROUP BY cor1.c
5d10: 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 35 38 0d 0a 35  ol0..----..58..5
5d20: 38 0d 0a 35 38 0d 0a 0d 0a 73 6b 69 70 69 66 20  8..58....skipif 
5d30: 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
5d40: 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
5d50: 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
5d60: 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
5d70: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
5d80: 74 0d 0a 53 45 4c 45 43 54 20 2b 20 74 61 62 32  t..SELECT + tab2
5d90: 2e 63 6f 6c 32 20 63 6f 6c 32 20 46 52 4f 4d 20  .col2 col2 FROM 
5da0: 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 63 6f  tab2 GROUP BY co
5db0: 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 35 38 0d 0a 37 39  l2..----..58..79
5dc0: 0d 0a 38 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..87....query I 
5dd0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
5de0: 2b 20 39 37 20 46 52 4f 4d 20 74 61 62 31 20 41  + 97 FROM tab1 A
5df0: 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49  S cor0 CROSS JOI
5e00: 4e 20 74 61 62 31 20 41 53 20 63 6f 72 31 20 47  N tab1 AS cor1 G
5e10: 52 4f 55 50 20 42 59 20 63 6f 72 31 2e 63 6f 6c  ROUP BY cor1.col
5e20: 31 0d 0a 2d 2d 2d 2d 0d 0a 39 37 0d 0a 39 37 0d  1..----..97..97.
5e30: 0a 39 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .97....query I r
5e40: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
5e50: 6f 72 30 2e 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c  or0.col1 * - col
5e60: 31 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 41 53  1 + cor0.col1 AS
5e70: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
5e80: 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
5e90: 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   cor0.col1..----
5ea0: 0d 0a 2d 31 36 34 30 0d 0a 2d 33 34 32 32 0d 0a  ..-1640..-3422..
5eb0: 2d 33 36 36 30 0d 0a 0d 0a 71 75 65 72 79 20 49  -3660....query I
5ec0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
5ed0: 20 2b 20 2d 20 39 36 20 41 53 20 63 6f 6c 31 20   + - 96 AS col1 
5ee0: 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20  FROM tab1 GROUP 
5ef0: 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab1.col1..--
5f00: 2d 2d 0d 0a 2d 39 36 0d 0a 2d 39 36 0d 0a 2d 39  --..-96..-96..-9
5f10: 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
5f20: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d  sort..SELECT + -
5f30: 20 74 61 62 32 2e 63 6f 6c 31 20 2a 20 2b 20 34   tab2.col1 * + 4
5f40: 38 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  8 FROM tab2 GROU
5f50: 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a  P BY tab2.col1..
5f60: 2d 2d 2d 2d 0d 0a 2d 31 39 36 38 0d 0a 2d 32 38  ----..-1968..-28
5f70: 33 32 0d 0a 2d 32 39 32 38 0d 0a 0d 0a 73 6b 69  32..-2928....ski
5f80: 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
5f90: 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
5fa0: 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
5fb0: 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
5fc0: 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
5fd0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
5fe0: 63 6f 72 30 2e 63 6f 6c 31 20 63 6f 6c 30 20 46  cor0.col1 col0 F
5ff0: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
6000: 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a   GROUP BY col1..
6010: 2d 2d 2d 2d 0d 0a 2d 34 31 0d 0a 2d 35 39 0d 0a  ----..-41..-59..
6020: 2d 36 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -61....query I r
6030: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
6040: 4c 4c 20 38 39 20 46 52 4f 4d 20 74 61 62 31 20  LL 89 FROM tab1 
6050: 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
6060: 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 38 39 0d 0a 38 39  l2..----..89..89
6070: 0d 0a 38 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..89....query I 
6080: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
6090: 41 4c 4c 20 2d 20 35 31 20 2b 20 63 6f 6c 30 20  ALL - 51 + col0 
60a0: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
60b0: 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
60c0: 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 35 0d  col0..----..-25.
60d0: 0a 2d 38 0d 0a 33 32 0d 0a 0d 0a 71 75 65 72 79  .-8..32....query
60e0: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
60f0: 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31  CT DISTINCT col1
6100: 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20   FROM tab0 cor0 
6110: 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
6120: 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d  l1, cor0.col1..-
6130: 2d 2d 2d 0d 0a 30 0d 0a 38 31 0d 0a 0d 0a 6f 6e  ---..0..81....on
6140: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
6150: 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
6160: 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
6170: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
6180: 39 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  98..SELECT DISTI
6190: 4e 43 54 20 2b 20 37 33 20 44 49 56 20 63 6f 72  NCT + 73 DIV cor
61a0: 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46  0.col2 AS col0 F
61b0: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
61c0: 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 2c 20   GROUP BY col1, 
61d0: 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 72 30 2e  cor0.col2, cor0.
61e0: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 39  col2..----..1..9
61f0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
6200: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
6210: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
6220: 72 74 20 6c 61 62 65 6c 2d 31 39 38 0d 0a 53 45  rt label-198..SE
6230: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
6240: 37 33 20 2f 20 63 6f 72 30 2e 63 6f 6c 32 20 41  73 / cor0.col2 A
6250: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
6260: 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
6270: 59 20 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c  Y col1, cor0.col
6280: 32 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d  2, cor0.col2..--
6290: 2d 2d 0d 0a 31 0d 0a 39 0d 0a 0d 0a 71 75 65 72  --..1..9....quer
62a0: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
62b0: 45 43 54 20 41 4c 4c 20 2d 20 63 6f 72 30 2e 63  ECT ALL - cor0.c
62c0: 6f 6c 30 20 2b 20 2d 20 63 6f 6c 30 20 46 52 4f  ol0 + - col0 FRO
62d0: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47  M tab0 AS cor0 G
62e0: 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
62f0: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 36 0d 0a 2d  0..----..-166..-
6300: 35 32 0d 0a 2d 38 36 0d 0a 0d 0a 71 75 65 72 79  52..-86....query
6310: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
6320: 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f  CT DISTINCT - co
6330: 72 30 2e 63 6f 6c 31 20 2a 20 36 36 20 46 52 4f  r0.col1 * 66 FRO
6340: 4d 20 74 61 62 32 20 63 6f 72 30 20 47 52 4f 55  M tab2 cor0 GROU
6350: 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a  P BY cor0.col1..
6360: 2d 2d 2d 2d 0d 0a 2d 32 37 30 36 0d 0a 2d 33 38  ----..-2706..-38
6370: 39 34 0d 0a 2d 34 30 32 36 0d 0a 0d 0a 71 75 65  94..-4026....que
6380: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
6390: 4c 45 43 54 20 41 4c 4c 20 30 20 41 53 20 63 6f  LECT ALL 0 AS co
63a0: 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f  l1 FROM tab0 GRO
63b0: 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d  UP BY tab0.col2.
63c0: 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a  .----..0..0..0..
63d0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
63e0: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 74 61  t..SELECT ALL ta
63f0: 62 30 2e 63 6f 6c 31 20 2d 20 63 6f 6c 31 20 46  b0.col1 - col1 F
6400: 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42  ROM tab0 GROUP B
6410: 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  Y col1..----..0.
6420: 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  .0....query I ro
6430: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
6440: 53 54 49 4e 43 54 20 37 35 20 41 53 20 63 6f 6c  STINCT 75 AS col
6450: 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
6460: 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c  or0 GROUP BY col
6470: 30 0d 0a 2d 2d 2d 2d 0d 0a 37 35 0d 0a 0d 0a 71  0..----..75....q
6480: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
6490: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
64a0: 2d 20 2d 20 74 61 62 31 2e 63 6f 6c 31 20 41 53  - - tab1.col1 AS
64b0: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
64c0: 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
64d0: 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d 0a 35 37  l1..----..44..57
64e0: 0d 0a 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..6....query I r
64f0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
6500: 20 2d 20 31 35 20 46 52 4f 4d 20 74 61 62 32 20   - 15 FROM tab2 
6510: 47 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d  GROUP BY col2..-
6520: 2d 2d 2d 0d 0a 2d 31 35 0d 0a 2d 31 35 0d 0a 2d  ---..-15..-15..-
6530: 31 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  15....query I ro
6540: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
6550: 53 54 49 4e 43 54 20 2b 20 37 37 20 41 53 20 63  STINCT + 77 AS c
6560: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol1 FROM tab0 GR
6570: 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30  OUP BY tab0.col0
6580: 0d 0a 2d 2d 2d 2d 0d 0a 37 37 0d 0a 0d 0a 71 75  ..----..77....qu
6590: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
65a0: 45 4c 45 43 54 20 2b 20 63 6f 6c 32 20 2a 20 35  ELECT + col2 * 5
65b0: 35 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  5 AS col1 FROM t
65c0: 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab1 AS cor0 GROU
65d0: 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a  P BY cor0.col2..
65e0: 2d 2d 2d 2d 0d 0a 32 34 37 35 0d 0a 33 39 30 35  ----..2475..3905
65f0: 0d 0a 34 34 30 0d 0a 0d 0a 71 75 65 72 79 20 49  ..440....query I
6600: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
6610: 20 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   0 AS col0 FROM 
6620: 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f  tab1 AS cor0 GRO
6630: 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d  UP BY cor0.col1.
6640: 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a  .----..0..0..0..
6650: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
6660: 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 46  t..SELECT col0 F
6670: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
6680: 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 30 2c 20   GROUP BY col0, 
6690: 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  cor0.col2..----.
66a0: 0a 32 32 0d 0a 32 38 0d 0a 38 32 0d 0a 0d 0a 71  .22..28..82....q
66b0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
66c0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
66d0: 38 34 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  84 FROM tab2 cor
66e0: 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62  0 CROSS JOIN tab
66f0: 31 20 41 53 20 63 6f 72 31 20 47 52 4f 55 50 20  1 AS cor1 GROUP 
6700: 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d  BY cor0.col1..--
6710: 2d 2d 0d 0a 38 34 0d 0a 0d 0a 71 75 65 72 79 20  --..84....query 
6720: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
6730: 54 20 44 49 53 54 49 4e 43 54 20 36 32 20 41 53  T DISTINCT 62 AS
6740: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
6750: 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
6760: 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   cor0.col0..----
6770: 0d 0a 36 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..62....query I 
6780: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
6790: 38 39 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  89 AS col1 FROM 
67a0: 74 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f  tab2 AS cor0 GRO
67b0: 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d  UP BY cor0.col1.
67c0: 0a 2d 2d 2d 2d 0d 0a 38 39 0d 0a 38 39 0d 0a 38  .----..89..89..8
67d0: 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  9....skipif post
67e0: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
67f0: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
6800: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
6810: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
6820: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
6830: 45 4c 45 43 54 20 2d 20 36 35 20 2a 20 74 61 62  ELECT - 65 * tab
6840: 30 2e 63 6f 6c 32 20 63 6f 6c 31 20 46 52 4f 4d  0.col2 col1 FROM
6850: 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 63   tab0 GROUP BY c
6860: 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 36 30  ol2..----..-1560
6870: 0d 0a 2d 32 34 37 30 0d 0a 2d 35 31 33 35 0d 0a  ..-2470..-5135..
6880: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
6890: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
68a0: 38 36 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  86 FROM tab0 AS 
68b0: 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
68c0: 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 38  r0.col0..----..8
68d0: 36 0d 0a 38 36 0d 0a 38 36 0d 0a 0d 0a 71 75 65  6..86..86....que
68e0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
68f0: 4c 45 43 54 20 38 36 20 41 53 20 63 6f 6c 31 20  LECT 86 AS col1 
6900: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
6910: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
6920: 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 38 36 0d 0a  col1..----..86..
6930: 38 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  86....skipif pos
6940: 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
6950: 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
6960: 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
6970: 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
6980: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
6990: 53 45 4c 45 43 54 20 2d 20 2d 20 38 37 20 63 6f  SELECT - - 87 co
69a0: 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f  l0 FROM tab0 GRO
69b0: 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d  UP BY tab0.col0.
69c0: 0a 2d 2d 2d 2d 0d 0a 38 37 0d 0a 38 37 0d 0a 38  .----..87..87..8
69d0: 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  7....query I row
69e0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 39  sort..SELECT - 9
69f0: 35 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  5 AS col2 FROM t
6a00: 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
6a10: 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 39  1.col2..----..-9
6a20: 35 0d 0a 2d 39 35 0d 0a 2d 39 35 0d 0a 0d 0a 71  5..-95..-95....q
6a30: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
6a40: 53 45 4c 45 43 54 20 2d 20 38 39 20 46 52 4f 4d  SELECT - 89 FROM
6a50: 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
6a60: 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0.col0..----..
6a70: 2d 38 39 0d 0a 2d 38 39 0d 0a 2d 38 39 0d 0a 0d  -89..-89..-89...
6a80: 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
6a90: 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
6aa0: 68 61 73 20 73 74 72 69 63 74 20 63 6f 6c 75 6d  has strict colum
6ab0: 6e 20 75 73 61 67 65 20 66 6f 72 20 47 52 4f 55  n usage for GROU
6ac0: 50 20 42 59 20 63 6c 61 75 73 65 73 0d 0a 71 75  P BY clauses..qu
6ad0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
6ae0: 45 4c 45 43 54 20 2d 20 43 4f 41 4c 45 53 43 45  ELECT - COALESCE
6af0: 20 28 20 2d 20 34 2c 20 63 6f 72 30 2e 63 6f 6c   ( - 4, cor0.col
6b00: 30 20 2a 20 63 6f 6c 30 2c 20 28 20 2d 20 63 6f  0 * col0, ( - co
6b10: 72 30 2e 63 6f 6c 32 20 29 20 29 20 2a 20 63 6f  r0.col2 ) ) * co
6b20: 72 30 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20  r0.col0 AS col1 
6b30: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
6b40: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 30 0d  0 GROUP BY col0.
6b50: 0a 2d 2d 2d 2d 0d 0a 31 30 34 0d 0a 31 37 32 0d  .----..104..172.
6b60: 0a 33 33 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .332....query I 
6b70: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
6b80: 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 36 39 20  DISTINCT + + 69 
6b90: 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
6ba0: 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab0.col1..--
6bb0: 2d 2d 0d 0a 36 39 0d 0a 0d 0a 71 75 65 72 79 20  --..69....query 
6bc0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
6bd0: 54 20 2b 20 34 35 20 46 52 4f 4d 20 74 61 62 31  T + 45 FROM tab1
6be0: 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a   AS cor0 CROSS J
6bf0: 4f 49 4e 20 74 61 62 31 20 41 53 20 63 6f 72 31  OIN tab1 AS cor1
6c00: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 31 2e 63   GROUP BY cor1.c
6c10: 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 34 35 0d 0a 34  ol2..----..45..4
6c20: 35 0d 0a 34 35 0d 0a 0d 0a 71 75 65 72 79 20 49  5..45....query I
6c30: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
6c40: 20 44 49 53 54 49 4e 43 54 20 63 6f 72 30 2e 63   DISTINCT cor0.c
6c50: 6f 6c 32 20 2a 20 32 38 20 46 52 4f 4d 20 74 61  ol2 * 28 FROM ta
6c60: 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b2 AS cor0 GROUP
6c70: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d   BY cor0.col2..-
6c80: 2d 2d 2d 0d 0a 31 36 32 34 0d 0a 32 32 31 32 0d  ---..1624..2212.
6c90: 0a 32 34 33 36 0d 0a 0d 0a 71 75 65 72 79 20 49  .2436....query I
6ca0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
6cb0: 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32   DISTINCT + col2
6cc0: 20 2d 20 2d 20 63 6f 72 30 2e 63 6f 6c 32 20 41   - - cor0.col2 A
6cd0: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
6ce0: 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
6cf0: 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y cor0.col2..---
6d00: 2d 0d 0a 31 31 36 0d 0a 31 35 38 0d 0a 31 37 34  -..116..158..174
6d10: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
6d20: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 30 20 2a 20  ort..SELECT 0 * 
6d30: 2d 20 74 61 62 30 2e 63 6f 6c 32 20 41 53 20 63  - tab0.col2 AS c
6d40: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol1 FROM tab0 GR
6d50: 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32  OUP BY tab0.col2
6d60: 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d  ..----..0..0..0.
6d70: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
6d80: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
6d90: 4e 43 54 20 2d 20 2d 20 39 38 20 2a 20 2d 20 74  NCT - - 98 * - t
6da0: 61 62 32 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 31  ab2.col0 AS col1
6db0: 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
6dc0: 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d   BY tab2.col0..-
6dd0: 2d 2d 2d 0d 0a 2d 31 34 37 30 0d 0a 2d 38 39 31  ---..-1470..-891
6de0: 38 0d 0a 2d 39 30 31 36 0d 0a 0d 0a 71 75 65 72  8..-9016....quer
6df0: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
6e00: 45 43 54 20 2d 20 2d 20 74 61 62 31 2e 63 6f 6c  ECT - - tab1.col
6e10: 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  0 FROM tab1 GROU
6e20: 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a  P BY tab1.col0..
6e30: 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32 38 0d 0a 38 32  ----..22..28..82
6e40: 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
6e50: 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
6e60: 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
6e70: 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
6e80: 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
6e90: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
6ea0: 4c 45 43 54 20 63 6f 6c 30 20 2a 20 31 39 20 63  LECT col0 * 19 c
6eb0: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52  ol0 FROM tab2 GR
6ec0: 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30  OUP BY tab2.col0
6ed0: 0d 0a 2d 2d 2d 2d 0d 0a 31 37 32 39 0d 0a 31 37  ..----..1729..17
6ee0: 34 38 0d 0a 32 38 35 0d 0a 0d 0a 73 6b 69 70 69  48..285....skipi
6ef0: 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
6f00: 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
6f10: 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
6f20: 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
6f30: 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
6f40: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30  ort..SELECT cor0
6f50: 2e 63 6f 6c 30 20 2d 20 63 6f 72 30 2e 63 6f 6c  .col0 - cor0.col
6f60: 30 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  0 col1 FROM tab0
6f70: 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
6f80: 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y cor0.col0..---
6f90: 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b  -..0..0..0....sk
6fa0: 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
6fb0: 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
6fc0: 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
6fd0: 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
6fe0: 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
6ff0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 34  owsort..SELECT 4
7000: 35 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  5 col0 FROM tab1
7010: 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
7020: 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72  Y cor0.col1, cor
7030: 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 34 35  0.col0..----..45
7040: 0d 0a 34 35 0d 0a 34 35 0d 0a 0d 0a 71 75 65 72  ..45..45....quer
7050: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
7060: 45 43 54 20 2b 20 33 33 20 46 52 4f 4d 20 74 61  ECT + 33 FROM ta
7070: 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b2 AS cor0 GROUP
7080: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d   BY cor0.col2..-
7090: 2d 2d 2d 0d 0a 33 33 0d 0a 33 33 0d 0a 33 33 0d  ---..33..33..33.
70a0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
70b0: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
70c0: 4e 43 54 20 2b 20 35 34 20 41 53 20 63 6f 6c 31  NCT + 54 AS col1
70d0: 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
70e0: 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d   BY tab0.col0..-
70f0: 2d 2d 2d 0d 0a 35 34 0d 0a 0d 0a 6f 6e 6c 79 69  ---..54....onlyi
7100: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
7110: 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
7120: 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
7130: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 33 32 0d  wsort label-232.
7140: 0a 53 45 4c 45 43 54 20 2b 20 43 41 53 54 28 20  .SELECT + CAST( 
7150: 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
7160: 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50   FROM tab1 GROUP
7170: 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d   BY tab1.col2..-
7180: 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ---..NULL..NULL.
7190: 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
71a0: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
71b0: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
71c0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 33  rowsort label-23
71d0: 32 0d 0a 53 45 4c 45 43 54 20 2b 20 43 41 53 54  2..SELECT + CAST
71e0: 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
71f0: 45 52 20 29 20 46 52 4f 4d 20 74 61 62 31 20 47  ER ) FROM tab1 G
7200: 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
7210: 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  2..----..NULL..N
7220: 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65  ULL..NULL....que
7230: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
7240: 4c 45 43 54 20 2d 20 39 20 41 53 20 63 6f 6c 30  LECT - 9 AS col0
7250: 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50   FROM tab1 GROUP
7260: 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d   BY tab1.col2..-
7270: 2d 2d 2d 0d 0a 2d 39 0d 0a 2d 39 0d 0a 2d 39 0d  ---..-9..-9..-9.
7280: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
7290: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
72a0: 4e 43 54 20 2b 20 39 34 20 46 52 4f 4d 20 74 61  NCT + 94 FROM ta
72b0: 62 30 2c 20 74 61 62 31 20 41 53 20 63 6f 72 30  b0, tab1 AS cor0
72c0: 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
72d0: 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 39 34 0d 0a 0d  ol2..----..94...
72e0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
72f0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 74 61 62  ..SELECT ALL tab
7300: 30 2e 63 6f 6c 32 20 2a 20 2b 20 31 38 20 41 53  0.col2 * + 18 AS
7310: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
7320: 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f  GROUP BY tab0.co
7330: 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 34 32 32 0d 0a  l2..----..1422..
7340: 34 33 32 0d 0a 36 38 34 0d 0a 0d 0a 71 75 65 72  432..684....quer
7350: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
7360: 45 43 54 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20  ECT + cor0.col1 
7370: 2a 20 63 6f 72 30 2e 63 6f 6c 31 20 46 52 4f 4d  * cor0.col1 FROM
7380: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52   tab1 AS cor0 GR
7390: 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31  OUP BY cor0.col1
73a0: 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  , cor0.col2..---
73b0: 2d 0d 0a 31 39 33 36 0d 0a 33 32 34 39 0d 0a 33  -..1936..3249..3
73c0: 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
73d0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
73e0: 20 2b 20 37 30 20 46 52 4f 4d 20 74 61 62 30 20   + 70 FROM tab0 
73f0: 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f  GROUP BY tab0.co
7400: 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 37 30 0d 0a 37 30  l2..----..70..70
7410: 0d 0a 37 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..70....query I 
7420: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
7430: 44 49 53 54 49 4e 43 54 20 2b 20 36 39 20 41 53  DISTINCT + 69 AS
7440: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
7450: 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
7460: 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 36  r0.col2..----..6
7470: 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
7480: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 39  sort..SELECT + 9
7490: 37 20 2a 20 33 38 20 46 52 4f 4d 20 74 61 62 31  7 * 38 FROM tab1
74a0: 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
74b0: 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y cor0.col0..---
74c0: 2d 0d 0a 33 36 38 36 0d 0a 33 36 38 36 0d 0a 33  -..3686..3686..3
74d0: 36 38 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  686....query I r
74e0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
74f0: 20 38 32 20 2b 20 2b 20 63 6f 72 30 2e 63 6f 6c   82 + + cor0.col
7500: 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  1 AS col1 FROM t
7510: 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab0 AS cor0 GROU
7520: 50 20 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  P BY col1..----.
7530: 0a 2d 31 0d 0a 2d 38 32 0d 0a 0d 0a 71 75 65 72  .-1..-82....quer
7540: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
7550: 45 43 54 20 44 49 53 54 49 4e 43 54 20 33 34 20  ECT DISTINCT 34 
7560: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
7570: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
7580: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33 34 0d 0a  col2..----..34..
7590: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
75a0: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f  t..SELECT ALL co
75b0: 72 30 2e 63 6f 6c 31 20 2d 20 2d 20 63 6f 72 30  r0.col1 - - cor0
75c0: 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20  .col1 FROM tab1 
75d0: 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
75e0: 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 31 34   col1..----..114
75f0: 0d 0a 31 32 0d 0a 38 38 0d 0a 0d 0a 71 75 65 72  ..12..88....quer
7600: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
7610: 45 43 54 20 2d 20 74 61 62 32 2e 63 6f 6c 32 20  ECT - tab2.col2 
7620: 2a 20 74 61 62 32 2e 63 6f 6c 32 20 41 53 20 63  * tab2.col2 AS c
7630: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 57 48  ol0 FROM tab2 WH
7640: 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 4e 4f 54  ERE NOT NULL NOT
7650: 20 49 4e 20 28 20 2b 20 63 6f 6c 30 20 29 20 47   IN ( + col0 ) G
7660: 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
7670: 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  2..----....query
7680: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
7690: 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 74 61  CT DISTINCT + ta
76a0: 62 31 2e 63 6f 6c 31 20 2a 20 2d 20 74 61 62 31  b1.col1 * - tab1
76b0: 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20  .col1 FROM tab1 
76c0: 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a 2d  GROUP BY col1..-
76d0: 2d 2d 2d 0d 0a 2d 31 39 33 36 0d 0a 2d 33 32 34  ---..-1936..-324
76e0: 39 0d 0a 2d 33 36 0d 0a 0d 0a 71 75 65 72 79 20  9..-36....query 
76f0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
7700: 54 20 44 49 53 54 49 4e 43 54 20 35 32 20 46 52  T DISTINCT 52 FR
7710: 4f 4d 20 74 61 62 30 20 63 6f 72 30 20 47 52 4f  OM tab0 cor0 GRO
7720: 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d  UP BY cor0.col0.
7730: 0a 2d 2d 2d 2d 0d 0a 35 32 0d 0a 0d 0a 71 75 65  .----..52....que
7740: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
7750: 4c 45 43 54 20 2b 20 63 6f 72 30 2e 63 6f 6c 31  LECT + cor0.col1
7760: 20 2a 20 32 33 20 41 53 20 63 6f 6c 30 20 46 52   * 23 AS col0 FR
7770: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
7780: 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a 2d  GROUP BY col1..-
7790: 2d 2d 2d 0d 0a 30 0d 0a 31 38 36 33 0d 0a 0d 0a  ---..0..1863....
77a0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
77b0: 0a 53 45 4c 45 43 54 20 2d 20 38 30 20 46 52 4f  .SELECT - 80 FRO
77c0: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
77d0: 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a 2d 2d  ROUP BY col1..--
77e0: 2d 2d 0d 0a 2d 38 30 0d 0a 2d 38 30 0d 0a 2d 38  --..-80..-80..-8
77f0: 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
7800: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
7810: 54 49 4e 43 54 20 33 20 41 53 20 63 6f 6c 32 20  TINCT 3 AS col2 
7820: 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20  FROM tab1 GROUP 
7830: 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab1.col1..--
7840: 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20 49  --..3....query I
7850: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
7860: 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 33 36   DISTINCT + - 36
7870: 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
7880: 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d   BY tab2.col1..-
7890: 2d 2d 2d 0d 0a 2d 33 36 0d 0a 0d 0a 71 75 65 72  ---..-36....quer
78a0: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
78b0: 45 43 54 20 34 37 20 46 52 4f 4d 20 74 61 62 30  ECT 47 FROM tab0
78c0: 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
78d0: 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 34 37 0d 0a 34  ol2..----..47..4
78e0: 37 0d 0a 34 37 0d 0a 0d 0a 71 75 65 72 79 20 49  7..47....query I
78f0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
7900: 20 44 49 53 54 49 4e 43 54 20 34 37 20 41 53 20   DISTINCT 47 AS 
7910: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 47  col1 FROM tab2 G
7920: 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
7930: 31 0d 0a 2d 2d 2d 2d 0d 0a 34 37 0d 0a 0d 0a 71  1..----..47....q
7940: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
7950: 53 45 4c 45 43 54 20 2b 20 33 32 20 41 53 20 63  SELECT + 32 AS c
7960: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol0 FROM tab1 GR
7970: 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31  OUP BY tab1.col1
7980: 0d 0a 2d 2d 2d 2d 0d 0a 33 32 0d 0a 33 32 0d 0a  ..----..32..32..
7990: 33 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  32....query I ro
79a0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 38 35  wsort..SELECT 85
79b0: 20 2a 20 2b 20 35 36 20 41 53 20 63 6f 6c 31 20   * + 56 AS col1 
79c0: 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20  FROM tab1 GROUP 
79d0: 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab1.col1..--
79e0: 2d 2d 0d 0a 34 37 36 30 0d 0a 34 37 36 30 0d 0a  --..4760..4760..
79f0: 34 37 36 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  4760....query I 
7a00: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
7a10: 74 61 62 31 2e 63 6f 6c 32 20 2a 20 74 61 62 31  tab1.col2 * tab1
7a20: 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20  .col2 FROM tab1 
7a30: 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
7a40: 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32 30 32 35 0d 0a  l2..----..2025..
7a50: 35 30 34 31 0d 0a 36 34 0d 0a 0d 0a 71 75 65 72  5041..64....quer
7a60: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
7a70: 45 43 54 20 34 20 46 52 4f 4d 20 74 61 62 30 20  ECT 4 FROM tab0 
7a80: 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f  AS cor0 CROSS JO
7a90: 49 4e 20 74 61 62 30 20 41 53 20 63 6f 72 31 20  IN tab0 AS cor1 
7aa0: 47 52 4f 55 50 20 42 59 20 63 6f 72 31 2e 63 6f  GROUP BY cor1.co
7ab0: 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 34 0d 0a 34 0d 0a  l2..----..4..4..
7ac0: 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  4....query I row
7ad0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
7ae0: 54 49 4e 43 54 20 2b 20 28 20 63 6f 72 30 2e 63  TINCT + ( cor0.c
7af0: 6f 6c 31 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ol1 ) AS col0 FR
7b00: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
7b10: 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
7b20: 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d 0a 35 37  l1..----..44..57
7b30: 0d 0a 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ..6....onlyif my
7b40: 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
7b50: 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
7b60: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
7b70: 74 20 6c 61 62 65 6c 2d 32 35 37 0d 0a 53 45 4c  t label-257..SEL
7b80: 45 43 54 20 63 6f 72 30 2e 63 6f 6c 32 20 2a 20  ECT cor0.col2 * 
7b90: 2b 20 63 6f 72 30 2e 63 6f 6c 32 20 2b 20 2b 20  + cor0.col2 + + 
7ba0: 38 30 20 44 49 56 20 63 6f 72 30 2e 63 6f 6c 32  80 DIV cor0.col2
7bb0: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
7bc0: 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
7bd0: 2e 63 6f 6c 31 2c 20 63 6f 6c 32 2c 20 63 6f 72  .col1, col2, cor
7be0: 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 30  0.col0..----..20
7bf0: 32 36 0d 0a 35 30 34 32 0d 0a 37 34 0d 0a 0d 0a  26..5042..74....
7c00: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
7c10: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
7c20: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
7c30: 61 62 65 6c 2d 32 35 37 0d 0a 53 45 4c 45 43 54  abel-257..SELECT
7c40: 20 63 6f 72 30 2e 63 6f 6c 32 20 2a 20 2b 20 63   cor0.col2 * + c
7c50: 6f 72 30 2e 63 6f 6c 32 20 2b 20 2b 20 38 30 20  or0.col2 + + 80 
7c60: 2f 20 63 6f 72 30 2e 63 6f 6c 32 20 46 52 4f 4d  / cor0.col2 FROM
7c70: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52   tab1 AS cor0 GR
7c80: 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31  OUP BY cor0.col1
7c90: 2c 20 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c  , col2, cor0.col
7ca0: 30 0d 0a 2d 2d 2d 2d 0d 0a 32 30 32 36 0d 0a 35  0..----..2026..5
7cb0: 30 34 32 0d 0a 37 34 0d 0a 0d 0a 71 75 65 72 79  042..74....query
7cc0: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
7cd0: 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f  CT DISTINCT - co
7ce0: 72 30 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20  r0.col1 AS col1 
7cf0: 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 43  FROM tab1 cor0 C
7d00: 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 63  ROSS JOIN tab2 c
7d10: 6f 72 31 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or1 GROUP BY cor
7d20: 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c  0.col1, cor0.col
7d30: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 34 0d 0a 2d 35  0..----..-44..-5
7d40: 37 0d 0a 2d 36 0d 0a 0d 0a 71 75 65 72 79 20 49  7..-6....query I
7d50: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
7d60: 20 41 4c 4c 20 28 20 32 39 20 29 20 46 52 4f 4d   ALL ( 29 ) FROM
7d70: 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74   tab1 GROUP BY t
7d80: 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  ab1.col1..----..
7d90: 32 39 0d 0a 32 39 0d 0a 32 39 0d 0a 0d 0a 71 75  29..29..29....qu
7da0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
7db0: 45 4c 45 43 54 20 2d 20 34 34 20 46 52 4f 4d 20  ELECT - 44 FROM 
7dc0: 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 63 6f  tab2 GROUP BY co
7dd0: 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 34 0d 0a 2d  l0..----..-44..-
7de0: 34 34 0d 0a 2d 34 34 0d 0a 0d 0a 6f 6e 6c 79 69  44..-44....onlyi
7df0: 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
7e00: 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
7e10: 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
7e20: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 36 31 0d  wsort label-261.
7e30: 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c  .SELECT cor0.col
7e40: 31 20 44 49 56 20 63 6f 72 30 2e 63 6f 6c 31 20  1 DIV cor0.col1 
7e50: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
7e60: 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  2 AS cor0 GROUP 
7e70: 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d  BY cor0.col1..--
7e80: 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a 73  --..1..1..1....s
7e90: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
7ea0: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
7eb0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
7ec0: 62 65 6c 2d 32 36 31 0d 0a 53 45 4c 45 43 54 20  bel-261..SELECT 
7ed0: 63 6f 72 30 2e 63 6f 6c 31 20 2f 20 63 6f 72 30  cor0.col1 / cor0
7ee0: 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52  .col1 AS col0 FR
7ef0: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
7f00: 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
7f10: 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a  l1..----..1..1..
7f20: 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
7f30: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
7f40: 20 36 39 20 46 52 4f 4d 20 74 61 62 32 20 41 53   69 FROM tab2 AS
7f50: 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
7f60: 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63  or0.col1, cor0.c
7f70: 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 36 39 0d 0a 36  ol1..----..69..6
7f80: 39 0d 0a 36 39 0d 0a 0d 0a 73 6b 69 70 69 66 20  9..69....skipif 
7f90: 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
7fa0: 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
7fb0: 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
7fc0: 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
7fd0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
7fe0: 74 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e 63  t..SELECT cor0.c
7ff0: 6f 6c 32 20 2b 20 63 6f 72 30 2e 63 6f 6c 30 20  ol2 + cor0.col0 
8000: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
8010: 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
8020: 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e  cor0.col0, cor0.
8030: 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d  col2, cor0.col2.
8040: 0a 2d 2d 2d 2d 0d 0a 31 30 32 0d 0a 31 35 30 0d  .----..102..150.
8050: 0a 31 37 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .170....query I 
8060: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
8070: 41 4c 4c 20 39 31 20 2a 20 33 39 20 41 53 20 63  ALL 91 * 39 AS c
8080: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 63 6f  ol2 FROM tab0 co
8090: 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
80a0: 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 33 35 34  .col0..----..354
80b0: 39 0d 0a 33 35 34 39 0d 0a 33 35 34 39 0d 0a 0d  9..3549..3549...
80c0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
80d0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
80e0: 54 20 2b 20 63 6f 72 31 2e 63 6f 6c 32 20 41 53  T + cor1.col2 AS
80f0: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
8100: 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
8110: 74 61 62 30 20 41 53 20 63 6f 72 31 20 47 52 4f  tab0 AS cor1 GRO
8120: 55 50 20 42 59 20 63 6f 72 31 2e 63 6f 6c 32 0d  UP BY cor1.col2.
8130: 0a 2d 2d 2d 2d 0d 0a 32 34 0d 0a 33 38 0d 0a 37  .----..24..38..7
8140: 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  9....onlyif mysq
8150: 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
8160: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
8170: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
8180: 6c 61 62 65 6c 2d 32 36 36 0d 0a 53 45 4c 45 43  label-266..SELEC
8190: 54 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  T CAST( NULL AS 
81a0: 53 49 47 4e 45 44 20 29 20 63 6f 6c 31 20 46 52  SIGNED ) col1 FR
81b0: 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
81c0: 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   tab2.col0..----
81d0: 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
81e0: 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
81f0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
8200: 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
8210: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
8220: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
8230: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
8240: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
8250: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
8260: 62 65 6c 2d 32 36 36 0d 0a 53 45 4c 45 43 54 20  bel-266..SELECT 
8270: 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
8280: 4e 54 45 47 45 52 20 29 20 63 6f 6c 31 20 46 52  NTEGER ) col1 FR
8290: 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
82a0: 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   tab2.col0..----
82b0: 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
82c0: 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  LL....query I ro
82d0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
82e0: 53 54 49 4e 43 54 20 32 31 20 2a 20 2d 20 63 6f  STINCT 21 * - co
82f0: 72 30 2e 63 6f 6c 32 20 2b 20 2d 20 63 6f 72 30  r0.col2 + - cor0
8300: 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20  .col2 FROM tab0 
8310: 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
8320: 20 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 32   col2, cor0.col2
8330: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 37 33 38 0d 0a 2d  ..----..-1738..-
8340: 35 32 38 0d 0a 2d 38 33 36 0d 0a 0d 0a 71 75 65  528..-836....que
8350: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
8360: 4c 45 43 54 20 2b 20 2d 20 74 61 62 30 2e 63 6f  LECT + - tab0.co
8370: 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l2 AS col1 FROM 
8380: 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61  tab0 GROUP BY ta
8390: 62 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  b0.col2..----..-
83a0: 32 34 0d 0a 2d 33 38 0d 0a 2d 37 39 0d 0a 0d 0a  24..-38..-79....
83b0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
83c0: 0a 53 45 4c 45 43 54 20 39 34 20 46 52 4f 4d 20  .SELECT 94 FROM 
83d0: 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61  tab0 GROUP BY ta
83e0: 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 39  b0.col1..----..9
83f0: 34 0d 0a 39 34 0d 0a 0d 0a 71 75 65 72 79 20 49  4..94....query I
8400: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
8410: 20 44 49 53 54 49 4e 43 54 20 2b 20 32 35 20 41   DISTINCT + 25 A
8420: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
8430: 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
8440: 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32 35 0d 0a 0d  ol2..----..25...
8450: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
8460: 0d 0a 53 45 4c 45 43 54 20 2d 20 33 31 20 2a 20  ..SELECT - 31 * 
8470: 35 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  51 AS col2 FROM 
8480: 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61  tab2 GROUP BY ta
8490: 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  b2.col1..----..-
84a0: 31 35 38 31 0d 0a 2d 31 35 38 31 0d 0a 2d 31 35  1581..-1581..-15
84b0: 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  81....query I ro
84c0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
84d0: 2b 20 39 31 20 41 53 20 63 6f 6c 31 20 46 52 4f  + 91 AS col1 FRO
84e0: 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
84f0: 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab2.col1..----.
8500: 0a 2d 39 31 0d 0a 2d 39 31 0d 0a 2d 39 31 0d 0a  .-91..-91..-91..
8510: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
8520: 74 0d 0a 53 45 4c 45 43 54 20 2b 20 34 34 20 46  t..SELECT + 44 F
8530: 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 47 52  ROM tab2 cor0 GR
8540: 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30  OUP BY cor0.col0
8550: 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d 0a 34 34 0d 0a  ..----..44..44..
8560: 34 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  44....onlyif mys
8570: 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
8580: 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
8590: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
85a0: 20 6c 61 62 65 6c 2d 32 37 34 0d 0a 53 45 4c 45   label-274..SELE
85b0: 43 54 20 43 41 53 45 20 63 6f 72 30 2e 63 6f 6c  CT CASE cor0.col
85c0: 30 20 57 48 45 4e 20 63 6f 72 30 2e 63 6f 6c 32  0 WHEN cor0.col2
85d0: 20 2a 20 2b 20 63 6f 72 30 2e 63 6f 6c 32 20 54   * + cor0.col2 T
85e0: 48 45 4e 20 63 6f 72 30 2e 63 6f 6c 32 20 57 48  HEN cor0.col2 WH
85f0: 45 4e 20 2d 20 34 32 20 44 49 56 20 63 6f 72 30  EN - 42 DIV cor0
8600: 2e 63 6f 6c 32 20 2b 20 63 6f 72 30 2e 63 6f 6c  .col2 + cor0.col
8610: 30 20 54 48 45 4e 20 2b 20 28 20 2d 20 63 6f 72  0 THEN + ( - cor
8620: 30 2e 63 6f 6c 30 20 29 20 57 48 45 4e 20 2d 20  0.col0 ) WHEN - 
8630: 63 6f 6c 32 20 2b 20 2d 20 63 6f 72 30 2e 63 6f  col2 + - cor0.co
8640: 6c 30 20 54 48 45 4e 20 4e 55 4c 4c 20 45 4e 44  l0 THEN NULL END
8650: 20 2b 20 4e 55 4c 4c 49 46 20 28 20 2b 20 63 6f   + NULLIF ( + co
8660: 72 30 2e 63 6f 6c 32 2c 20 2b 20 63 6f 72 30 2e  r0.col2, + cor0.
8670: 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 30  col0 ) FROM tab0
8680: 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
8690: 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 6c 32 0d 0a  or0.col0, col2..
86a0: 2d 2d 2d 2d 0d 0a 35 33 0d 0a 4e 55 4c 4c 0d 0a  ----..53..NULL..
86b0: 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  NULL....skipif m
86c0: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
86d0: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
86e0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 37 34  owsort label-274
86f0: 0d 0a 53 45 4c 45 43 54 20 43 41 53 45 20 63 6f  ..SELECT CASE co
8700: 72 30 2e 63 6f 6c 30 20 57 48 45 4e 20 63 6f 72  r0.col0 WHEN cor
8710: 30 2e 63 6f 6c 32 20 2a 20 2b 20 63 6f 72 30 2e  0.col2 * + cor0.
8720: 63 6f 6c 32 20 54 48 45 4e 20 63 6f 72 30 2e 63  col2 THEN cor0.c
8730: 6f 6c 32 20 57 48 45 4e 20 2d 20 34 32 20 2f 20  ol2 WHEN - 42 / 
8740: 63 6f 72 30 2e 63 6f 6c 32 20 2b 20 63 6f 72 30  cor0.col2 + cor0
8750: 2e 63 6f 6c 30 20 54 48 45 4e 20 2b 20 28 20 2d  .col0 THEN + ( -
8760: 20 63 6f 72 30 2e 63 6f 6c 30 20 29 20 57 48 45   cor0.col0 ) WHE
8770: 4e 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 63 6f 72  N - col2 + - cor
8780: 30 2e 63 6f 6c 30 20 54 48 45 4e 20 4e 55 4c 4c  0.col0 THEN NULL
8790: 20 45 4e 44 20 2b 20 4e 55 4c 4c 49 46 20 28 20   END + NULLIF ( 
87a0: 2b 20 63 6f 72 30 2e 63 6f 6c 32 2c 20 2b 20 63  + cor0.col2, + c
87b0: 6f 72 30 2e 63 6f 6c 30 20 29 20 46 52 4f 4d 20  or0.col0 ) FROM 
87c0: 74 61 62 30 20 63 6f 72 30 20 47 52 4f 55 50 20  tab0 cor0 GROUP 
87d0: 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f  BY cor0.col0, co
87e0: 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 35 33 0d 0a 4e 55  l2..----..53..NU
87f0: 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  LL..NULL....quer
8800: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
8810: 45 43 54 20 2b 20 36 37 20 46 52 4f 4d 20 74 61  ECT + 67 FROM ta
8820: 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
8830: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d   BY cor0.col2..-
8840: 2d 2d 2d 0d 0a 36 37 0d 0a 36 37 0d 0a 36 37 0d  ---..67..67..67.
8850: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
8860: 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
8870: 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
8880: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
8890: 62 65 6c 2d 32 37 36 0d 0a 53 45 4c 45 43 54 20  bel-276..SELECT 
88a0: 31 33 20 44 49 56 20 63 6f 72 30 2e 63 6f 6c 32  13 DIV cor0.col2
88b0: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
88c0: 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b1 AS cor0 GROUP
88d0: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d   BY cor0.col2..-
88e0: 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 31 0d 0a 0d 0a  ---..0..0..1....
88f0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
8900: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
8910: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
8920: 61 62 65 6c 2d 32 37 36 0d 0a 53 45 4c 45 43 54  abel-276..SELECT
8930: 20 31 33 20 2f 20 63 6f 72 30 2e 63 6f 6c 32 20   13 / cor0.col2 
8940: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
8950: 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
8960: 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d  BY cor0.col2..--
8970: 2d 2d 0d 0a 30 0d 0a 30 0d 0a 31 0d 0a 0d 0a 71  --..0..0..1....q
8980: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
8990: 53 45 4c 45 43 54 20 74 61 62 32 2e 63 6f 6c 30  SELECT tab2.col0
89a0: 20 2a 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20   * col0 AS col1 
89b0: 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
89c0: 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d  BY tab2.col0..--
89d0: 2d 2d 0d 0a 32 32 35 0d 0a 38 32 38 31 0d 0a 38  --..225..8281..8
89e0: 34 36 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  464....query I r
89f0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
8a00: 4c 4c 20 74 61 62 30 2e 63 6f 6c 32 20 2a 20 74  LL tab0.col2 * t
8a10: 61 62 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61  ab0.col2 FROM ta
8a20: 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30  b0 GROUP BY tab0
8a30: 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 34 34  .col2..----..144
8a40: 34 0d 0a 35 37 36 0d 0a 36 32 34 31 0d 0a 0d 0a  4..576..6241....
8a50: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
8a60: 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
8a70: 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
8a80: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
8a90: 2d 32 37 39 0d 0a 53 45 4c 45 43 54 20 2b 20 74  -279..SELECT + t
8aa0: 61 62 31 2e 63 6f 6c 31 20 2b 20 43 41 53 54 28  ab1.col1 + CAST(
8ab0: 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
8ac0: 29 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  ) FROM tab1 GROU
8ad0: 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a  P BY tab1.col1..
8ae0: 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
8af0: 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
8b00: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
8b10: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
8b20: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32   rowsort label-2
8b30: 37 39 0d 0a 53 45 4c 45 43 54 20 2b 20 74 61 62  79..SELECT + tab
8b40: 31 2e 63 6f 6c 31 20 2b 20 43 41 53 54 20 28 20  1.col1 + CAST ( 
8b50: 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
8b60: 29 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  ) FROM tab1 GROU
8b70: 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a  P BY tab1.col1..
8b80: 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
8b90: 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20  ..NULL....query 
8ba0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
8bb0: 54 20 2d 20 2d 20 74 61 62 30 2e 63 6f 6c 31 20  T - - tab0.col1 
8bc0: 2b 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31  + + col1 AS col1
8bd0: 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
8be0: 20 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d   BY tab0.col1..-
8bf0: 2d 2d 2d 0d 0a 30 0d 0a 31 36 32 0d 0a 0d 0a 73  ---..0..162....s
8c00: 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
8c10: 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
8c20: 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
8c30: 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
8c40: 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
8c50: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
8c60: 2b 20 74 61 62 30 2e 63 6f 6c 32 20 63 6f 6c 32  + tab0.col2 col2
8c70: 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
8c80: 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d   BY tab0.col2..-
8c90: 2d 2d 2d 0d 0a 32 34 0d 0a 33 38 0d 0a 37 39 0d  ---..24..38..79.
8ca0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
8cb0: 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 32 39 20  rt..SELECT + 29 
8cc0: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
8cd0: 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
8ce0: 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 32 39 0d 0a  col1..----..29..
8cf0: 32 39 0d 0a 32 39 0d 0a 0d 0a 71 75 65 72 79 20  29..29....query 
8d00: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
8d10: 54 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 2a 20  T + cor0.col1 * 
8d20: 63 6f 72 30 2e 63 6f 6c 31 20 41 53 20 63 6f 6c  cor0.col1 AS col
8d30: 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  0 FROM tab1 AS c
8d40: 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
8d50: 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c  0.col1, cor0.col
8d60: 30 0d 0a 2d 2d 2d 2d 0d 0a 31 39 33 36 0d 0a 33  0..----..1936..3
8d70: 32 34 39 0d 0a 33 36 0d 0a 0d 0a 6f 6e 6c 79 69  249..36....onlyi
8d80: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
8d90: 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
8da0: 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
8db0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 38 34 0d  wsort label-284.
8dc0: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 41 53 54  .SELECT ALL CAST
8dd0: 28 20 2b 20 32 37 20 41 53 20 53 49 47 4e 45 44  ( + 27 AS SIGNED
8de0: 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   ) FROM tab0 AS 
8df0: 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
8e00: 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 32  r0.col1..----..2
8e10: 37 0d 0a 32 37 0d 0a 0d 0a 73 6b 69 70 69 66 20  7..27....skipif 
8e20: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
8e30: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
8e40: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 38  rowsort label-28
8e50: 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 41  4..SELECT ALL CA
8e60: 53 54 20 28 20 2b 20 32 37 20 41 53 20 49 4e 54  ST ( + 27 AS INT
8e70: 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 30  EGER ) FROM tab0
8e80: 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
8e90: 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y cor0.col1..---
8ea0: 2d 0d 0a 32 37 0d 0a 32 37 0d 0a 0d 0a 71 75 65  -..27..27....que
8eb0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
8ec0: 4c 45 43 54 20 41 4c 4c 20 74 61 62 32 2e 63 6f  LECT ALL tab2.co
8ed0: 6c 32 20 2b 20 39 33 20 2a 20 34 35 20 41 53 20  l2 + 93 * 45 AS 
8ee0: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 47  col2 FROM tab2 G
8ef0: 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
8f00: 32 0d 0a 2d 2d 2d 2d 0d 0a 34 32 34 33 0d 0a 34  2..----..4243..4
8f10: 32 36 34 0d 0a 34 32 37 32 0d 0a 0d 0a 71 75 65  264..4272....que
8f20: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
8f30: 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c 31 20 2d  LECT cor0.col1 -
8f40: 20 2d 20 63 6f 72 30 2e 63 6f 6c 31 20 2a 20 63   - cor0.col1 * c
8f50: 6f 72 30 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 31  or0.col1 AS col1
8f60: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
8f70: 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
8f80: 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 31  .col0, cor0.col1
8f90: 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 36 36  ..----..0..0..66
8fa0: 34 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  42....query I ro
8fb0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
8fc0: 53 54 49 4e 43 54 20 63 6f 6c 31 20 2b 20 2b 20  STINCT col1 + + 
8fd0: 28 20 31 31 20 29 20 46 52 4f 4d 20 74 61 62 32  ( 11 ) FROM tab2
8fe0: 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
8ff0: 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63  or0.col0, cor0.c
9000: 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 35 32 0d 0a 37  ol1..----..52..7
9010: 30 0d 0a 37 32 0d 0a 0d 0a 71 75 65 72 79 20 49  0..72....query I
9020: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
9030: 20 41 4c 4c 20 2d 20 74 61 62 31 2e 63 6f 6c 32   ALL - tab1.col2
9040: 20 2b 20 2b 20 38 34 20 41 53 20 63 6f 6c 30 20   + + 84 AS col0 
9050: 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20  FROM tab1 GROUP 
9060: 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d  BY tab1.col2..--
9070: 2d 2d 0d 0a 31 33 0d 0a 33 39 0d 0a 37 36 0d 0a  --..13..39..76..
9080: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
9090: 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
90a0: 43 54 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  CT col1 FROM tab
90b0: 32 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  2 cor0 GROUP BY 
90c0: 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 31 0d 0a  col1..----..41..
90d0: 35 39 0d 0a 36 31 0d 0a 0d 0a 71 75 65 72 79 20  59..61....query 
90e0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
90f0: 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 74  T DISTINCT + + t
9100: 61 62 30 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 31  ab0.col1 AS col1
9110: 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
9120: 20 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a   BY col1..----..
9130: 30 0d 0a 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49  0..81....query I
9140: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
9150: 20 2d 20 2b 20 74 61 62 32 2e 63 6f 6c 32 20 41   - + tab2.col2 A
9160: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
9170: 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63   GROUP BY tab2.c
9180: 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 38 0d 0a  ol2..----..-58..
9190: 2d 37 39 0d 0a 2d 38 37 0d 0a 0d 0a 6f 6e 6c 79  -79..-87....only
91a0: 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
91b0: 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
91c0: 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
91d0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 39 32  owsort label-292
91e0: 0d 0a 53 45 4c 45 43 54 20 2d 20 33 30 20 2b 20  ..SELECT - 30 + 
91f0: 2d 20 74 61 62 31 2e 63 6f 6c 32 20 44 49 56 20  - tab1.col2 DIV 
9200: 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46  + col2 AS col0 F
9210: 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
9220: 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab1.col2..---
9230: 2d 0d 0a 2d 33 31 0d 0a 2d 33 31 0d 0a 2d 33 31  -..-31..-31..-31
9240: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
9250: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
9260: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
9270: 72 74 20 6c 61 62 65 6c 2d 32 39 32 0d 0a 53 45  rt label-292..SE
9280: 4c 45 43 54 20 2d 20 33 30 20 2b 20 2d 20 74 61  LECT - 30 + - ta
9290: 62 31 2e 63 6f 6c 32 20 2f 20 2b 20 63 6f 6c 32  b1.col2 / + col2
92a0: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
92b0: 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31  b1 GROUP BY tab1
92c0: 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 31  .col2..----..-31
92d0: 0d 0a 2d 33 31 0d 0a 2d 33 31 0d 0a 0d 0a 71 75  ..-31..-31....qu
92e0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
92f0: 45 4c 45 43 54 20 2b 20 63 6f 72 30 2e 63 6f 6c  ELECT + cor0.col
9300: 31 20 2b 20 2b 20 38 39 20 41 53 20 63 6f 6c 32  1 + + 89 AS col2
9310: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
9320: 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
9330: 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 33 33  .col1..----..133
9340: 0d 0a 31 34 36 0d 0a 39 35 0d 0a 0d 0a 71 75 65  ..146..95....que
9350: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
9360: 4c 45 43 54 20 2b 20 31 35 20 41 53 20 63 6f 6c  LECT + 15 AS col
9370: 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  1 FROM tab1 AS c
9380: 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
9390: 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c  0.col0, cor0.col
93a0: 31 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 31 35 0d  1..----..15..15.
93b0: 0a 31 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .15....query I r
93c0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
93d0: 4c 4c 20 2b 20 31 36 20 41 53 20 63 6f 6c 30 20  LL + 16 AS col0 
93e0: 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
93f0: 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d  BY tab0.col0..--
9400: 2d 2d 0d 0a 31 36 0d 0a 31 36 0d 0a 31 36 0d 0a  --..16..16..16..
9410: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
9420: 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 33 36  t..SELECT + - 36
9430: 20 2b 20 2b 20 37 34 20 41 53 20 63 6f 6c 30 20   + + 74 AS col0 
9440: 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
9450: 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d  BY tab2.col0..--
9460: 2d 2d 0d 0a 33 38 0d 0a 33 38 0d 0a 33 38 0d 0a  --..38..38..38..
9470: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
9480: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
9490: 34 35 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  45 AS col0 FROM 
94a0: 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f  tab0 AS cor0 GRO
94b0: 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d  UP BY cor0.col0.
94c0: 0a 2d 2d 2d 2d 0d 0a 34 35 0d 0a 34 35 0d 0a 34  .----..45..45..4
94d0: 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  5....skipif post
94e0: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
94f0: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
9500: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
9510: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
9520: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
9530: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
9540: 6f 72 30 2e 63 6f 6c 32 20 63 6f 6c 32 20 46 52  or0.col2 col2 FR
9550: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
9560: 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
9570: 6c 32 2c 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  l2, col2..----..
9580: 32 34 0d 0a 33 38 0d 0a 37 39 0d 0a 0d 0a 71 75  24..38..79....qu
9590: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
95a0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
95b0: 20 2b 20 63 6f 6c 32 20 2a 20 74 61 62 31 2e 63   + col2 * tab1.c
95c0: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol2 FROM tab1 GR
95d0: 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32  OUP BY tab1.col2
95e0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 32 35 0d 0a 2d  ..----..-2025..-
95f0: 35 30 34 31 0d 0a 2d 36 34 0d 0a 0d 0a 71 75 65  5041..-64....que
9600: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
9610: 4c 45 43 54 20 2b 20 4e 55 4c 4c 49 46 20 28 20  LECT + NULLIF ( 
9620: 63 6f 72 30 2e 63 6f 6c 30 2c 20 2d 20 63 6f 72  cor0.col0, - cor
9630: 30 2e 63 6f 6c 31 20 2a 20 2b 20 34 36 20 29 20  0.col1 * + 46 ) 
9640: 2d 20 2d 20 63 6f 72 30 2e 63 6f 6c 31 20 46 52  - - cor0.col1 FR
9650: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
9660: 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
9670: 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d  l0, cor0.col1..-
9680: 2d 2d 2d 0d 0a 31 32 34 0d 0a 32 36 0d 0a 38 33  ---..124..26..83
9690: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
96a0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
96b0: 2b 20 31 30 20 41 53 20 63 6f 6c 30 20 46 52 4f  + 10 AS col0 FRO
96c0: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
96d0: 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
96e0: 32 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a 31 30 0d  2..----..10..10.
96f0: 0a 31 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .10....onlyif my
9700: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
9710: 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
9720: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
9730: 74 20 6c 61 62 65 6c 2d 33 30 32 0d 0a 53 45 4c  t label-302..SEL
9740: 45 43 54 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  ECT CAST( NULL A
9750: 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20  S SIGNED ) FROM 
9760: 74 61 62 32 20 63 6f 72 30 20 47 52 4f 55 50 20  tab2 cor0 GROUP 
9770: 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d  BY cor0.col2..--
9780: 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
9790: 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  NULL....skipif m
97a0: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
97b0: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
97c0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 30 32  owsort label-302
97d0: 0d 0a 53 45 4c 45 43 54 20 43 41 53 54 20 28 20  ..SELECT CAST ( 
97e0: 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
97f0: 29 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  ) FROM tab2 cor0
9800: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
9810: 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ol2..----..NULL.
9820: 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71  .NULL..NULL....q
9830: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
9840: 53 45 4c 45 43 54 20 2d 20 2d 20 32 37 20 46 52  SELECT - - 27 FR
9850: 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
9860: 20 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   tab1.col0..----
9870: 0d 0a 32 37 0d 0a 32 37 0d 0a 32 37 0d 0a 0d 0a  ..27..27..27....
9880: 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
9890: 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
98a0: 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
98b0: 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
98c0: 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
98d0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
98e0: 20 34 35 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   45 col2 FROM ta
98f0: 62 31 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  b1 cor0 GROUP BY
9900: 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   cor0.col1..----
9910: 0d 0a 34 35 0d 0a 34 35 0d 0a 34 35 0d 0a 0d 0a  ..45..45..45....
9920: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
9930: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
9940: 20 2d 20 74 61 62 30 2e 63 6f 6c 30 20 41 53 20   - tab0.col0 AS 
9950: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 47  col1 FROM tab0 G
9960: 52 4f 55 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d  ROUP BY col0..--
9970: 2d 2d 0d 0a 2d 32 36 0d 0a 2d 34 33 0d 0a 2d 38  --..-26..-43..-8
9980: 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
9990: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
99a0: 20 2b 20 74 61 62 30 2e 63 6f 6c 32 20 2a 20 2d   + tab0.col2 * -
99b0: 20 31 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   10 AS col1 FROM
99c0: 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
99d0: 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  ab0.col2..----..
99e0: 2d 32 34 30 0d 0a 2d 33 38 30 0d 0a 2d 37 39 30  -240..-380..-790
99f0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
9a00: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 28 20 63 6f  ort..SELECT ( co
9a10: 72 30 2e 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74  r0.col0 ) FROM t
9a20: 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab0 AS cor0 GROU
9a30: 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  P BY cor0.col0..
9a40: 2d 2d 2d 2d 0d 0a 32 36 0d 0a 34 33 0d 0a 38 33  ----..26..43..83
9a50: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
9a60: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 39 34  ort..SELECT + 94
9a70: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
9a80: 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b2 AS cor0 GROUP
9a90: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d   BY cor0.col1..-
9aa0: 2d 2d 2d 0d 0a 39 34 0d 0a 39 34 0d 0a 39 34 0d  ---..94..94..94.
9ab0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
9ac0: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
9ad0: 4e 43 54 20 35 20 2d 20 2d 20 35 36 20 46 52 4f  NCT 5 - - 56 FRO
9ae0: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47  M tab0 AS cor0 G
9af0: 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
9b00: 31 0d 0a 2d 2d 2d 2d 0d 0a 36 31 0d 0a 0d 0a 71  1..----..61....q
9b10: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
9b20: 53 45 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c 32  SELECT cor0.col2
9b30: 20 2b 20 2d 20 63 6f 72 30 2e 63 6f 6c 32 20 46   + - cor0.col2 F
9b40: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
9b50: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
9b60: 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 32 2c 20  ol0, cor0.col2, 
9b70: 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor0.col0..----.
9b80: 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72  .0..0..0....quer
9b90: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
9ba0: 45 43 54 20 39 20 46 52 4f 4d 20 74 61 62 30 20  ECT 9 FROM tab0 
9bb0: 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f  GROUP BY tab0.co
9bc0: 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 39 0d 0a  l1..----..9..9..
9bd0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
9be0: 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 63 6f  t..SELECT - - co
9bf0: 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l0 AS col0 FROM 
9c00: 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
9c10: 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32  b1.col0..----..2
9c20: 32 0d 0a 32 38 0d 0a 38 32 0d 0a 0d 0a 71 75 65  2..28..82....que
9c30: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
9c40: 4c 45 43 54 20 2d 20 63 6f 72 30 2e 63 6f 6c 30  LECT - cor0.col0
9c50: 20 2a 20 2d 20 28 20 2d 20 63 6f 72 30 2e 63 6f   * - ( - cor0.co
9c60: 6c 30 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  l0 ) AS col1 FRO
9c70: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47  M tab0 AS cor0 G
9c80: 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
9c90: 32 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  2, cor0.col0..--
9ca0: 2d 2d 0d 0a 2d 31 38 34 39 0d 0a 2d 36 37 36 0d  --..-1849..-676.
9cb0: 0a 2d 36 38 38 39 0d 0a 0d 0a 73 6b 69 70 69 66  .-6889....skipif
9cc0: 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
9cd0: 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
9ce0: 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
9cf0: 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
9d00: 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
9d10: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
9d20: 4e 43 54 20 2d 20 63 6f 72 30 2e 63 6f 6c 32 20  NCT - cor0.col2 
9d30: 2a 20 63 6f 72 30 2e 63 6f 6c 30 20 63 6f 6c 30  * cor0.col0 col0
9d40: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
9d50: 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
9d60: 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 32  .col0, cor0.col2
9d70: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 30 35 0d 0a 2d  ..----..-1305..-
9d80: 35 33 33 36 0d 0a 2d 37 31 38 39 0d 0a 0d 0a 71  5336..-7189....q
9d90: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
9da0: 53 45 4c 45 43 54 20 28 20 2b 20 35 34 20 29 20  SELECT ( + 54 ) 
9db0: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
9dc0: 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  0 AS cor0 GROUP 
9dd0: 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d  BY cor0.col2..--
9de0: 2d 2d 0d 0a 35 34 0d 0a 35 34 0d 0a 35 34 0d 0a  --..54..54..54..
9df0: 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
9e00: 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
9e10: 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
9e20: 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
9e30: 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
9e40: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
9e50: 43 54 20 41 4c 4c 20 2b 20 33 31 20 63 6f 6c 32  CT ALL + 31 col2
9e60: 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50   FROM tab1 GROUP
9e70: 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d   BY tab1.col2..-
9e80: 2d 2d 2d 0d 0a 33 31 0d 0a 33 31 0d 0a 33 31 0d  ---..31..31..31.
9e90: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
9ea0: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28  rt..SELECT ALL (
9eb0: 20 33 32 20 29 20 41 53 20 63 6f 6c 32 20 46 52   32 ) AS col2 FR
9ec0: 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
9ed0: 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   tab2.col2..----
9ee0: 0d 0a 33 32 0d 0a 33 32 0d 0a 33 32 0d 0a 0d 0a  ..32..32..32....
9ef0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
9f00: 0a 53 45 4c 45 43 54 20 2d 20 38 30 20 46 52 4f  .SELECT - 80 FRO
9f10: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
9f20: 52 4f 55 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d  ROUP BY col0..--
9f30: 2d 2d 0d 0a 2d 38 30 0d 0a 2d 38 30 0d 0a 2d 38  --..-80..-80..-8
9f40: 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
9f50: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
9f60: 54 49 4e 43 54 20 2b 20 31 32 20 46 52 4f 4d 20  TINCT + 12 FROM 
9f70: 74 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f  tab2 AS cor0 GRO
9f80: 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d  UP BY cor0.col1.
9f90: 0a 2d 2d 2d 2d 0d 0a 31 32 0d 0a 0d 0a 71 75 65  .----..12....que
9fa0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
9fb0: 4c 45 43 54 20 36 20 41 53 20 63 6f 6c 30 20 46  LECT 6 AS col0 F
9fc0: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
9fd0: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
9fe0: 6f 6c 30 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  ol0, col1..----.
9ff0: 0a 36 0d 0a 36 0d 0a 36 0d 0a 0d 0a 71 75 65 72  .6..6..6....quer
a000: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
a010: 45 43 54 20 41 4c 4c 20 31 30 20 2a 20 2b 20 63  ECT ALL 10 * + c
a020: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol0 FROM tab0 GR
a030: 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30  OUP BY tab0.col0
a040: 0d 0a 2d 2d 2d 2d 0d 0a 32 36 30 0d 0a 34 33 30  ..----..260..430
a050: 0d 0a 38 33 30 0d 0a 0d 0a 71 75 65 72 79 20 49  ..830....query I
a060: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
a070: 20 44 49 53 54 49 4e 43 54 20 2b 20 30 20 46 52   DISTINCT + 0 FR
a080: 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
a090: 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   col1..----..0..
a0a0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
a0b0: 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 39 36  t..SELECT - + 96
a0c0: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
a0d0: 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30  b0 GROUP BY tab0
a0e0: 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 36  .col2..----..-96
a0f0: 0d 0a 2d 39 36 0d 0a 2d 39 36 0d 0a 0d 0a 71 75  ..-96..-96....qu
a100: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
a110: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 36  ELECT DISTINCT 6
a120: 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  1 AS col2 FROM t
a130: 61 62 32 20 47 52 4f 55 50 20 42 59 20 63 6f 6c  ab2 GROUP BY col
a140: 32 0d 0a 2d 2d 2d 2d 0d 0a 36 31 0d 0a 0d 0a 71  2..----..61....q
a150: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
a160: 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 35 38 20  SELECT ALL + 58 
a170: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
a180: 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
a190: 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 35 38 0d 0a  col0..----..58..
a1a0: 35 38 0d 0a 35 38 0d 0a 0d 0a 71 75 65 72 79 20  58..58....query 
a1b0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
a1c0: 54 20 35 37 20 41 53 20 63 6f 6c 31 20 46 52 4f  T 57 AS col1 FRO
a1d0: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47  M tab0 AS cor0 G
a1e0: 52 4f 55 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d  ROUP BY col0..--
a1f0: 2d 2d 0d 0a 35 37 0d 0a 35 37 0d 0a 35 37 0d 0a  --..57..57..57..
a200: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
a210: 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
a220: 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
a230: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
a240: 65 6c 2d 33 32 37 0d 0a 53 45 4c 45 43 54 20 2d  el-327..SELECT -
a250: 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
a260: 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62  IGNED ) FROM tab
a270: 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
a280: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  col2..----..NULL
a290: 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..NULL..NULL....
a2a0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
a2b0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
a2c0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
a2d0: 61 62 65 6c 2d 33 32 37 0d 0a 53 45 4c 45 43 54  abel-327..SELECT
a2e0: 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41   - CAST ( NULL A
a2f0: 53 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d  S INTEGER ) FROM
a300: 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
a310: 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  ab0.col2..----..
a320: 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  NULL..NULL..NULL
a330: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
a340: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20  ort..SELECT - + 
a350: 38 37 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  87 AS col0 FROM 
a360: 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
a370: 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  b1.col2..----..-
a380: 38 37 0d 0a 2d 38 37 0d 0a 2d 38 37 0d 0a 0d 0a  87..-87..-87....
a390: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
a3a0: 0a 53 45 4c 45 43 54 20 28 20 39 37 20 29 20 46  .SELECT ( 97 ) F
a3b0: 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42  ROM tab2 GROUP B
a3c0: 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab2.col2..---
a3d0: 2d 0d 0a 39 37 0d 0a 39 37 0d 0a 39 37 0d 0a 0d  -..97..97..97...
a3e0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
a3f0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d  ..SELECT ALL + -
a400: 20 36 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   60 AS col0 FROM
a410: 20 74 61 62 32 2c 20 74 61 62 31 20 41 53 20 63   tab2, tab1 AS c
a420: 6f 72 30 20 47 52 4f 55 50 20 42 59 20 74 61 62  or0 GROUP BY tab
a430: 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 36  2.col1..----..-6
a440: 30 0d 0a 2d 36 30 0d 0a 2d 36 30 0d 0a 0d 0a 71  0..-60..-60....q
a450: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
a460: 53 45 4c 45 43 54 20 2d 20 28 20 74 61 62 32 2e  SELECT - ( tab2.
a470: 63 6f 6c 32 20 29 20 2d 20 2b 20 63 6f 6c 32 20  col2 ) - + col2 
a480: 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
a490: 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  BY col2..----..-
a4a0: 31 31 36 0d 0a 2d 31 35 38 0d 0a 2d 31 37 34 0d  116..-158..-174.
a4b0: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
a4c0: 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
a4d0: 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
a4e0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
a4f0: 62 65 6c 2d 33 33 32 0d 0a 53 45 4c 45 43 54 20  bel-332..SELECT 
a500: 44 49 53 54 49 4e 43 54 20 2d 20 39 33 20 2d 20  DISTINCT - 93 - 
a510: 63 6f 72 30 2e 63 6f 6c 32 20 44 49 56 20 2d 20  cor0.col2 DIV - 
a520: 37 34 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72  74 FROM tab1 cor
a530: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
a540: 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 31 2c  col2, cor0.col1,
a550: 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   cor0.col2..----
a560: 0d 0a 2d 39 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-93....skipif 
a570: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
a580: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
a590: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 33  rowsort label-33
a5a0: 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  2..SELECT DISTIN
a5b0: 43 54 20 2d 20 39 33 20 2d 20 63 6f 72 30 2e 63  CT - 93 - cor0.c
a5c0: 6f 6c 32 20 2f 20 2d 20 37 34 20 46 52 4f 4d 20  ol2 / - 74 FROM 
a5d0: 74 61 62 31 20 63 6f 72 30 20 47 52 4f 55 50 20  tab1 cor0 GROUP 
a5e0: 42 59 20 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f  BY cor0.col2, co
a5f0: 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f  r0.col1, cor0.co
a600: 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 33 0d 0a 0d  l2..----..-93...
a610: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
a620: 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 72 30 2e  ..SELECT - cor0.
a630: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41  col1 FROM tab1 A
a640: 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
a650: 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d  col1, cor0.col0.
a660: 0a 2d 2d 2d 2d 0d 0a 2d 34 34 0d 0a 2d 35 37 0d  .----..-44..-57.
a670: 0a 2d 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .-6....query I r
a680: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
a690: 49 53 54 49 4e 43 54 20 2b 20 36 33 20 46 52 4f  ISTINCT + 63 FRO
a6a0: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47  M tab0 AS cor0 G
a6b0: 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
a6c0: 30 0d 0a 2d 2d 2d 2d 0d 0a 36 33 0d 0a 0d 0a 71  0..----..63....q
a6d0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
a6e0: 53 45 4c 45 43 54 20 2d 20 37 39 20 46 52 4f 4d  SELECT - 79 FROM
a6f0: 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
a700: 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  ab0.col1..----..
a710: 2d 37 39 0d 0a 2d 37 39 0d 0a 0d 0a 71 75 65 72  -79..-79....quer
a720: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
a730: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 39  ECT DISTINCT + 9
a740: 37 20 2a 20 63 6f 72 30 2e 63 6f 6c 32 20 41 53  7 * cor0.col2 AS
a750: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
a760: 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
a770: 20 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 72 30   cor0.col2, cor0
a780: 2e 63 6f 6c 32 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d  .col2, col1..---
a790: 2d 0d 0a 34 33 36 35 0d 0a 36 38 38 37 0d 0a 37  -..4365..6887..7
a7a0: 37 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  76....query I ro
a7b0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
a7c0: 2d 20 33 33 20 41 53 20 63 6f 6c 31 20 46 52 4f  - 33 AS col1 FRO
a7d0: 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
a7e0: 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab0.col0..----.
a7f0: 0a 33 33 0d 0a 33 33 0d 0a 33 33 0d 0a 0d 0a 71  .33..33..33....q
a800: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
a810: 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 37 35 20  SELECT ALL - 75 
a820: 2b 20 36 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  + 6 AS col1 FROM
a830: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52   tab1 AS cor0 GR
a840: 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31  OUP BY cor0.col1
a850: 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  , cor0.col1..---
a860: 2d 0d 0a 2d 36 39 0d 0a 2d 36 39 0d 0a 2d 36 39  -..-69..-69..-69
a870: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
a880: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
a890: 49 4e 43 54 20 28 20 2d 20 63 6f 72 30 2e 63 6f  INCT ( - cor0.co
a8a0: 6c 32 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f  l2 ) AS col0 FRO
a8b0: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
a8c0: 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
a8d0: 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 38 0d 0a 2d 37  2..----..-58..-7
a8e0: 39 0d 0a 2d 38 37 0d 0a 0d 0a 71 75 65 72 79 20  9..-87....query 
a8f0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
a900: 54 20 41 4c 4c 20 2d 20 34 32 20 46 52 4f 4d 20  T ALL - 42 FROM 
a910: 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f  tab0 AS cor0 GRO
a920: 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d  UP BY col2..----
a930: 0d 0a 2d 34 32 0d 0a 2d 34 32 0d 0a 2d 34 32 0d  ..-42..-42..-42.
a940: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
a950: 72 74 0d 0a 53 45 4c 45 43 54 20 43 4f 41 4c 45  rt..SELECT COALE
a960: 53 43 45 20 28 20 63 6f 72 30 2e 63 6f 6c 31 2c  SCE ( cor0.col1,
a970: 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 2d 20   + cor0.col1, - 
a980: 37 30 20 2b 20 31 36 20 29 20 41 53 20 63 6f 6c  70 + 16 ) AS col
a990: 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  0 FROM tab0 AS c
a9a0: 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
a9b0: 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  0.col1..----..0.
a9c0: 0a 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .81....query I r
a9d0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
a9e0: 20 34 39 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   49 AS col0 FROM
a9f0: 20 74 61 62 32 2c 20 74 61 62 31 20 41 53 20 63   tab2, tab1 AS c
aa00: 6f 72 30 20 47 52 4f 55 50 20 42 59 20 74 61 62  or0 GROUP BY tab
aa10: 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 39  2.col1..----..49
aa20: 0d 0a 34 39 0d 0a 34 39 0d 0a 0d 0a 6f 6e 6c 79  ..49..49....only
aa30: 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
aa40: 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
aa50: 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
aa60: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 34 33  owsort label-343
aa70: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 37  ..SELECT ALL - 7
aa80: 33 20 44 49 56 20 63 6f 72 31 2e 63 6f 6c 32 20  3 DIV cor1.col2 
aa90: 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
aaa0: 32 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20  2 AS cor0 CROSS 
aab0: 4a 4f 49 4e 20 74 61 62 30 20 41 53 20 63 6f 72  JOIN tab0 AS cor
aac0: 31 20 47 52 4f 55 50 20 42 59 20 63 6f 72 31 2e  1 GROUP BY cor1.
aad0: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a  col2..----..-1..
aae0: 2d 33 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  -3..0....skipif 
aaf0: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
ab00: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
ab10: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 34  rowsort label-34
ab20: 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  3..SELECT ALL - 
ab30: 37 33 20 2f 20 63 6f 72 31 2e 63 6f 6c 32 20 41  73 / cor1.col2 A
ab40: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
ab50: 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a   AS cor0 CROSS J
ab60: 4f 49 4e 20 74 61 62 30 20 41 53 20 63 6f 72 31  OIN tab0 AS cor1
ab70: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 31 2e 63   GROUP BY cor1.c
ab80: 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d  ol2..----..-1..-
ab90: 33 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  3..0....query I 
aba0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
abb0: 2d 20 74 61 62 30 2e 63 6f 6c 31 20 2a 20 2b 20  - tab0.col1 * + 
abc0: 36 37 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f  67 FROM tab0 GRO
abd0: 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d  UP BY tab0.col1.
abe0: 0a 2d 2d 2d 2d 0d 0a 2d 35 34 32 37 0d 0a 30 0d  .----..-5427..0.
abf0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
ac00: 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 74  rt..SELECT - + t
ac10: 61 62 32 2e 63 6f 6c 32 20 2a 20 74 61 62 32 2e  ab2.col2 * tab2.
ac20: 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f  col2 AS col1 FRO
ac30: 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
ac40: 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  tab2.col2..----.
ac50: 0a 2d 33 33 36 34 0d 0a 2d 36 32 34 31 0d 0a 2d  .-3364..-6241..-
ac60: 37 35 36 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20  7569....query I 
ac70: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
ac80: 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32 20  DISTINCT + col2 
ac90: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
aca0: 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
acb0: 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d  BY cor0.col2..--
acc0: 2d 2d 0d 0a 34 35 0d 0a 37 31 0d 0a 38 0d 0a 0d  --..45..71..8...
acd0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
ace0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2d  ..SELECT ALL - -
acf0: 20 31 32 20 46 52 4f 4d 20 74 61 62 32 20 47 52   12 FROM tab2 GR
ad00: 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31  OUP BY tab2.col1
ad10: 0d 0a 2d 2d 2d 2d 0d 0a 31 32 0d 0a 31 32 0d 0a  ..----..12..12..
ad20: 31 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  12....query I ro
ad30: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
ad40: 4c 20 74 61 62 31 2e 63 6f 6c 31 20 2b 20 74 61  L tab1.col1 + ta
ad50: 62 31 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20  b1.col1 AS col0 
ad60: 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20  FROM tab1 GROUP 
ad70: 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab1.col1..--
ad80: 2d 2d 0d 0a 31 31 34 0d 0a 31 32 0d 0a 38 38 0d  --..114..12..88.
ad90: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
ada0: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
adb0: 4e 43 54 20 2b 20 2b 20 32 35 20 46 52 4f 4d 20  NCT + + 25 FROM 
adc0: 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61  tab0 GROUP BY ta
add0: 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 32  b0.col1..----..2
ade0: 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
adf0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 31  sort..SELECT - 1
ae00: 39 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  9 FROM tab0 AS c
ae10: 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
ae20: 30 2e 63 6f 6c 32 2c 20 63 6f 6c 32 0d 0a 2d 2d  0.col2, col2..--
ae30: 2d 2d 0d 0a 2d 31 39 0d 0a 2d 31 39 0d 0a 2d 31  --..-19..-19..-1
ae40: 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
ae50: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63  sort..SELECT - c
ae60: 6f 72 30 2e 63 6f 6c 30 20 2a 20 2d 20 63 6f 72  or0.col0 * - cor
ae70: 30 2e 63 6f 6c 30 20 2b 20 63 6f 72 30 2e 63 6f  0.col0 + cor0.co
ae80: 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l0 AS col2 FROM 
ae90: 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f  tab0 AS cor0 GRO
aea0: 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d  UP BY cor0.col0.
aeb0: 0a 2d 2d 2d 2d 0d 0a 31 38 39 32 0d 0a 36 39 37  .----..1892..697
aec0: 32 0d 0a 37 30 32 0d 0a 0d 0a 71 75 65 72 79 20  2..702....query 
aed0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
aee0: 54 20 36 31 20 41 53 20 63 6f 6c 32 20 46 52 4f  T 61 AS col2 FRO
aef0: 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
af00: 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  tab2.col2..----.
af10: 0a 36 31 0d 0a 36 31 0d 0a 36 31 0d 0a 0d 0a 71  .61..61..61....q
af20: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
af30: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
af40: 2b 20 63 6f 72 30 2e 63 6f 6c 32 20 2a 20 2d 20  + cor0.col2 * - 
af50: 63 6f 72 30 2e 63 6f 6c 32 20 2b 20 2b 20 63 6f  cor0.col2 + + co
af60: 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l0 AS col2 FROM 
af70: 74 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f  tab2 AS cor0 GRO
af80: 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 2c  UP BY cor0.col2,
af90: 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   cor0.col0..----
afa0: 0d 0a 2d 33 32 37 32 0d 0a 2d 36 31 35 30 0d 0a  ..-3272..-6150..
afb0: 2d 37 35 35 34 0d 0a 0d 0a 71 75 65 72 79 20 49  -7554....query I
afc0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
afd0: 20 2d 20 37 37 20 2b 20 2d 20 63 6f 6c 30 20 46   - 77 + - col0 F
afe0: 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
aff0: 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y tab1.col0..---
b000: 2d 0d 0a 2d 31 30 35 0d 0a 2d 31 35 39 0d 0a 2d  -..-105..-159..-
b010: 39 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  99....onlyif mys
b020: 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
b030: 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
b040: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
b050: 20 6c 61 62 65 6c 2d 33 35 35 0d 0a 53 45 4c 45   label-355..SELE
b060: 43 54 20 2b 20 63 6f 6c 32 20 44 49 56 20 2d 20  CT + col2 DIV - 
b070: 74 61 62 31 2e 63 6f 6c 32 20 41 53 20 63 6f 6c  tab1.col2 AS col
b080: 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  0 FROM tab1 GROU
b090: 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a  P BY tab1.col2..
b0a0: 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31  ----..-1..-1..-1
b0b0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
b0c0: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
b0d0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
b0e0: 72 74 20 6c 61 62 65 6c 2d 33 35 35 0d 0a 53 45  rt label-355..SE
b0f0: 4c 45 43 54 20 2b 20 63 6f 6c 32 20 2f 20 2d 20  LECT + col2 / - 
b100: 74 61 62 31 2e 63 6f 6c 32 20 41 53 20 63 6f 6c  tab1.col2 AS col
b110: 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  0 FROM tab1 GROU
b120: 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a  P BY tab1.col2..
b130: 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31  ----..-1..-1..-1
b140: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
b150: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 31 33 20 41  ort..SELECT 13 A
b160: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
b170: 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
b180: 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  or0.col0..----..
b190: 31 33 0d 0a 31 33 0d 0a 31 33 0d 0a 0d 0a 71 75  13..13..13....qu
b1a0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
b1b0: 45 4c 45 43 54 20 41 4c 4c 20 74 61 62 32 2e 63  ELECT ALL tab2.c
b1c0: 6f 6c 31 20 2a 20 2b 20 34 37 20 46 52 4f 4d 20  ol1 * + 47 FROM 
b1d0: 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61  tab2 GROUP BY ta
b1e0: 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31  b2.col1..----..1
b1f0: 39 32 37 0d 0a 32 37 37 33 0d 0a 32 38 36 37 0d  927..2773..2867.
b200: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
b210: 72 74 0d 0a 53 45 4c 45 43 54 20 74 61 62 30 2e  rt..SELECT tab0.
b220: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 47  col0 FROM tab0 G
b230: 52 4f 55 50 20 42 59 20 63 6f 6c 30 20 48 41 56  ROUP BY col0 HAV
b240: 49 4e 47 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c  ING NULL IS NULL
b250: 0d 0a 2d 2d 2d 2d 0d 0a 32 36 0d 0a 34 33 0d 0a  ..----..26..43..
b260: 38 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  83....query I ro
b270: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
b280: 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f  col2 AS col2 FRO
b290: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47  M tab1 AS cor0 G
b2a0: 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
b2b0: 31 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d  1, cor0.col2..--
b2c0: 2d 2d 0d 0a 34 35 0d 0a 37 31 0d 0a 38 0d 0a 0d  --..45..71..8...
b2d0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
b2e0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 36  ..SELECT ALL + 6
b2f0: 34 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55  4 FROM tab0 GROU
b300: 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a  P BY tab0.col0..
b310: 2d 2d 2d 2d 0d 0a 36 34 0d 0a 36 34 0d 0a 36 34  ----..64..64..64
b320: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
b330: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20  ort..SELECT - + 
b340: 74 61 62 30 2e 63 6f 6c 30 20 41 53 20 63 6f 6c  tab0.col0 AS col
b350: 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55  2 FROM tab0 GROU
b360: 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a  P BY tab0.col0..
b370: 2d 2d 2d 2d 0d 0a 2d 32 36 0d 0a 2d 34 33 0d 0a  ----..-26..-43..
b380: 2d 38 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  -83....skipif po
b390: 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
b3a0: 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
b3b0: 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
b3c0: 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
b3d0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
b3e0: 0a 53 45 4c 45 43 54 20 2b 20 2b 20 74 61 62 31  .SELECT + + tab1
b3f0: 2e 63 6f 6c 31 20 63 6f 6c 31 20 46 52 4f 4d 20  .col1 col1 FROM 
b400: 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
b410: 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34  b1.col1..----..4
b420: 34 0d 0a 35 37 0d 0a 36 0d 0a 0d 0a 71 75 65 72  4..57..6....quer
b430: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
b440: 45 43 54 20 2d 20 63 6f 72 30 2e 63 6f 6c 30 20  ECT - cor0.col0 
b450: 2b 20 63 6f 6c 30 20 2a 20 2d 20 36 33 20 41 53  + col0 * - 63 AS
b460: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
b470: 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
b480: 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   cor0.col0..----
b490: 0d 0a 2d 31 36 36 34 0d 0a 2d 32 37 35 32 0d 0a  ..-1664..-2752..
b4a0: 2d 35 33 31 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -5312....onlyif 
b4b0: 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
b4c0: 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
b4d0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
b4e0: 6f 72 74 20 6c 61 62 65 6c 2d 33 36 34 0d 0a 53  ort label-364..S
b4f0: 45 4c 45 43 54 20 2d 20 2d 20 39 31 20 44 49 56  ELECT - - 91 DIV
b500: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
b510: 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f  GROUP BY tab0.co
b520: 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 32 0d 0a  l2..----..1..2..
b530: 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
b540: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
b550: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
b560: 6f 72 74 20 6c 61 62 65 6c 2d 33 36 34 0d 0a 53  ort label-364..S
b570: 45 4c 45 43 54 20 2d 20 2d 20 39 31 20 2f 20 63  ELECT - - 91 / c
b580: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol2 FROM tab0 GR
b590: 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32  OUP BY tab0.col2
b5a0: 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 32 0d 0a 33 0d  ..----..1..2..3.
b5b0: 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
b5c0: 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
b5d0: 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
b5e0: 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
b5f0: 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
b600: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
b610: 45 43 54 20 2b 20 35 30 20 63 6f 6c 30 20 46 52  ECT + 50 col0 FR
b620: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
b630: 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
b640: 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 35 30 0d 0a 35 30  l2..----..50..50
b650: 0d 0a 35 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..50....query I 
b660: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
b670: 44 49 53 54 49 4e 43 54 20 2b 20 32 30 20 46 52  DISTINCT + 20 FR
b680: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
b690: 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
b6a0: 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 32 30 0d 0a 0d 0a  l1..----..20....
b6b0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
b6c0: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
b6d0: 20 2d 20 34 38 20 46 52 4f 4d 20 74 61 62 31 20   - 48 FROM tab1 
b6e0: 47 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d  GROUP BY col2..-
b6f0: 2d 2d 2d 0d 0a 2d 34 38 0d 0a 0d 0a 71 75 65 72  ---..-48....quer
b700: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
b710: 45 43 54 20 41 4c 4c 20 63 6f 72 30 2e 63 6f 6c  ECT ALL cor0.col
b720: 30 20 2b 20 63 6f 72 30 2e 63 6f 6c 30 20 41 53  0 + cor0.col0 AS
b730: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
b740: 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
b750: 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30   cor0.col1, cor0
b760: 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36 36  .col0..----..166
b770: 0d 0a 35 32 0d 0a 38 36 0d 0a 0d 0a 71 75 65 72  ..52..86....quer
b780: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
b790: 45 43 54 20 41 4c 4c 20 2d 20 63 6f 72 30 2e 63  ECT ALL - cor0.c
b7a0: 6f 6c 31 20 2a 20 63 6f 72 30 2e 63 6f 6c 31 20  ol1 * cor0.col1 
b7b0: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
b7c0: 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
b7d0: 42 59 20 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f  BY col1, cor0.co
b7e0: 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 33 36 0d  l0..----..-1936.
b7f0: 0a 2d 33 32 34 39 0d 0a 2d 33 36 0d 0a 0d 0a 6f  .-3249..-36....o
b800: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
b810: 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
b820: 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
b830: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
b840: 33 37 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  370..SELECT ALL 
b850: 2d 20 63 6f 72 30 2e 63 6f 6c 32 20 2b 20 63 6f  - cor0.col2 + co
b860: 6c 30 20 44 49 56 20 33 20 46 52 4f 4d 20 74 61  l0 DIV 3 FROM ta
b870: 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b1 AS cor0 GROUP
b880: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 2c 20 63   BY cor0.col2, c
b890: 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  or0.col0..----..
b8a0: 2d 31 0d 0a 2d 33 36 0d 0a 2d 34 34 0d 0a 0d 0a  -1..-36..-44....
b8b0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
b8c0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
b8d0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
b8e0: 61 62 65 6c 2d 33 37 30 0d 0a 53 45 4c 45 43 54  abel-370..SELECT
b8f0: 20 41 4c 4c 20 2d 20 63 6f 72 30 2e 63 6f 6c 32   ALL - cor0.col2
b900: 20 2b 20 63 6f 6c 30 20 2f 20 33 20 46 52 4f 4d   + col0 / 3 FROM
b910: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52   tab1 AS cor0 GR
b920: 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32  OUP BY cor0.col2
b930: 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  , cor0.col0..---
b940: 2d 0d 0a 2d 31 0d 0a 2d 33 36 0d 0a 2d 34 34 0d  -..-1..-36..-44.
b950: 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
b960: 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
b970: 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
b980: 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
b990: 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
b9a0: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
b9b0: 45 43 54 20 2d 20 63 6f 6c 30 20 2a 20 63 6f 72  ECT - col0 * cor
b9c0: 30 2e 63 6f 6c 32 20 63 6f 6c 32 20 46 52 4f 4d  0.col2 col2 FROM
b9d0: 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52   tab0 AS cor0 GR
b9e0: 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32  OUP BY cor0.col2
b9f0: 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  , cor0.col0..---
ba00: 2d 0d 0a 2d 31 30 33 32 0d 0a 2d 32 30 35 34 0d  -..-1032..-2054.
ba10: 0a 2d 33 31 35 34 0d 0a 0d 0a 73 6b 69 70 69 66  .-3154....skipif
ba20: 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
ba30: 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
ba40: 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
ba50: 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
ba60: 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
ba70: 72 74 0d 0a 53 45 4c 45 43 54 20 74 61 62 32 2e  rt..SELECT tab2.
ba80: 63 6f 6c 32 20 2b 20 2d 20 74 61 62 32 2e 63 6f  col2 + - tab2.co
ba90: 6c 32 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  l2 col2 FROM tab
baa0: 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
bab0: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30  col2..----..0..0
bac0: 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..0....query I r
bad0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
bae0: 49 53 54 49 4e 43 54 20 31 38 20 2a 20 2b 20 31  ISTINCT 18 * + 1
baf0: 38 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  8 AS col2 FROM t
bb00: 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
bb10: 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33 32  1.col2..----..32
bb20: 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  4....query I row
bb30: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 28  sort..SELECT - (
bb40: 20 2d 20 63 6f 72 30 2e 63 6f 6c 30 20 29 20 46   - cor0.col0 ) F
bb50: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
bb60: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
bb70: 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 39  ol0..----..15..9
bb80: 31 0d 0a 39 32 0d 0a 0d 0a 71 75 65 72 79 20 49  1..92....query I
bb90: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
bba0: 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 2b   DISTINCT col2 +
bbb0: 20 2d 20 28 20 37 34 20 2b 20 2d 20 74 61 62 31   - ( 74 + - tab1
bbc0: 2e 63 6f 6c 32 20 29 20 2a 20 28 20 74 61 62 31  .col2 ) * ( tab1
bbd0: 2e 63 6f 6c 32 20 2a 20 2d 20 74 61 62 31 2e 63  .col2 * - tab1.c
bbe0: 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 31 20  ol2 ) FROM tab1 
bbf0: 47 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d  GROUP BY col2..-
bc00: 2d 2d 2d 0d 0a 31 35 31 39 34 0d 0a 34 32 33 32  ---..15194..4232
bc10: 0d 0a 35 38 37 37 30 0d 0a 0d 0a 71 75 65 72 79  ..58770....query
bc20: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
bc30: 43 54 20 63 6f 72 30 2e 63 6f 6c 30 20 41 53 20  CT cor0.col0 AS 
bc40: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
bc50: 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
bc60: 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 6c 32 0d  cor0.col0, col2.
bc70: 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 39 31 0d 0a 39  .----..15..91..9
bc80: 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
bc90: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63  sort..SELECT + c
bca0: 6f 72 30 2e 63 6f 6c 32 20 2b 20 2b 20 63 6f 72  or0.col2 + + cor
bcb0: 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  0.col2 FROM tab2
bcc0: 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
bcd0: 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63  or0.col0, cor0.c
bce0: 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 31 36 0d 0a  ol2..----..116..
bcf0: 31 35 38 0d 0a 31 37 34 0d 0a 0d 0a 71 75 65 72  158..174....quer
bd00: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
bd10: 45 43 54 20 44 49 53 54 49 4e 43 54 20 31 34 20  ECT DISTINCT 14 
bd20: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
bd30: 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
bd40: 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a  col0..----..14..
bd50: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
bd60: 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
bd70: 43 54 20 2b 20 2b 20 28 20 39 36 20 29 20 46 52  CT + + ( 96 ) FR
bd80: 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
bd90: 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   tab2.col2..----
bda0: 0d 0a 39 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..96....query I 
bdb0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
bdc0: 44 49 53 54 49 4e 43 54 20 2d 20 38 35 20 2a 20  DISTINCT - 85 * 
bdd0: 37 33 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  73 AS col2 FROM 
bde0: 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61  tab0 GROUP BY ta
bdf0: 62 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  b0.col2..----..-
be00: 36 32 30 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20  6205....query I 
be10: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
be20: 44 49 53 54 49 4e 43 54 20 39 32 20 41 53 20 63  DISTINCT 92 AS c
be30: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol2 FROM tab1 GR
be40: 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d  OUP BY col2..---
be50: 2d 0d 0a 39 32 0d 0a 0d 0a 71 75 65 72 79 20 49  -..92....query I
be60: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
be70: 20 2d 20 63 6f 72 30 2e 63 6f 6c 31 20 2a 20 63   - cor0.col1 * c
be80: 6f 72 30 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 30  or0.col1 AS col0
be90: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
bea0: 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
beb0: 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 35  .col1..----..-65
bec0: 36 31 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49  61..0....query I
bed0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
bee0: 20 44 49 53 54 49 4e 43 54 20 2b 20 36 37 20 41   DISTINCT + 67 A
bef0: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
bf00: 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
bf10: 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 36 37 0d 0a 0d  ol2..----..67...
bf20: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
bf30: 0d 0a 53 45 4c 45 43 54 20 32 32 20 41 53 20 63  ..SELECT 22 AS c
bf40: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol0 FROM tab1 AS
bf50: 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
bf60: 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32  ol1..----..22..2
bf70: 32 0d 0a 32 32 0d 0a 0d 0a 71 75 65 72 79 20 49  2..22....query I
bf80: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
bf90: 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32   DISTINCT + col2
bfa0: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
bfb0: 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31  b1 GROUP BY tab1
bfc0: 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 34 35 0d  .col2..----..45.
bfd0: 0a 37 31 0d 0a 38 0d 0a 0d 0a 71 75 65 72 79 20  .71..8....query 
bfe0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
bff0: 54 20 41 4c 4c 20 2b 20 74 61 62 32 2e 63 6f 6c  T ALL + tab2.col
c000: 32 20 2b 20 74 61 62 32 2e 63 6f 6c 32 20 41 53  2 + tab2.col2 AS
c010: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
c020: 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
c030: 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 31 36 0d 0a 31  l2..----..116..1
c040: 35 38 0d 0a 31 37 34 0d 0a 0d 0a 71 75 65 72 79  58..174....query
c050: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
c060: 43 54 20 44 49 53 54 49 4e 43 54 20 74 61 62 30  CT DISTINCT tab0
c070: 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20  .col1 FROM tab0 
c080: 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f  GROUP BY tab0.co
c090: 6c 31 20 48 41 56 49 4e 47 20 4e 55 4c 4c 20 49  l1 HAVING NULL I
c0a0: 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  S NULL..----..0.
c0b0: 0a 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .81....query I r
c0c0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
c0d0: 4c 4c 20 74 61 62 31 2e 63 6f 6c 30 20 2b 20 74  LL tab1.col0 + t
c0e0: 61 62 31 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 30  ab1.col0 AS col0
c0f0: 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50   FROM tab1 GROUP
c100: 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a   BY col0..----..
c110: 31 36 34 0d 0a 34 34 0d 0a 35 36 0d 0a 0d 0a 71  164..44..56....q
c120: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
c130: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
c140: 63 6f 72 30 2e 63 6f 6c 30 20 41 53 20 63 6f 6c  cor0.col0 AS col
c150: 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  1 FROM tab1 AS c
c160: 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
c170: 30 2e 63 6f 6c 30 20 48 41 56 49 4e 47 20 4e 4f  0.col0 HAVING NO
c180: 54 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55  T NULL IS NOT NU
c190: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32 38  LL..----..22..28
c1a0: 0d 0a 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..82....query I 
c1b0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
c1c0: 41 4c 4c 20 32 37 20 41 53 20 63 6f 6c 30 20 46  ALL 27 AS col0 F
c1d0: 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42  ROM tab0 GROUP B
c1e0: 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32 37  Y col2..----..27
c1f0: 0d 0a 32 37 0d 0a 32 37 0d 0a 0d 0a 73 6b 69 70  ..27..27....skip
c200: 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
c210: 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
c220: 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
c230: 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
c240: 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
c250: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 38  sort..SELECT + 8
c260: 38 20 2a 20 2b 20 34 33 20 63 6f 6c 31 20 46 52  8 * + 43 col1 FR
c270: 4f 4d 20 74 61 62 32 2c 20 74 61 62 30 20 63 6f  OM tab2, tab0 co
c280: 72 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 32  r0 GROUP BY tab2
c290: 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 33 37 38  .col0..----..378
c2a0: 34 0d 0a 33 37 38 34 0d 0a 33 37 38 34 0d 0a 0d  4..3784..3784...
c2b0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
c2c0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
c2d0: 54 20 36 30 20 2b 20 31 30 20 41 53 20 63 6f 6c  T 60 + 10 AS col
c2e0: 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
c2f0: 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
c300: 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 37 30  0.col0..----..70
c310: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
c320: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
c330: 2b 20 2b 20 74 61 62 30 2e 63 6f 6c 30 20 2b 20  + + tab0.col0 + 
c340: 74 61 62 30 2e 63 6f 6c 30 20 41 53 20 63 6f 6c  tab0.col0 AS col
c350: 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55  2 FROM tab0 GROU
c360: 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a  P BY tab0.col0..
c370: 2d 2d 2d 2d 0d 0a 31 36 36 0d 0a 35 32 0d 0a 38  ----..166..52..8
c380: 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  6....onlyif mysq
c390: 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
c3a0: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
c3b0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
c3c0: 6c 61 62 65 6c 2d 33 39 34 0d 0a 53 45 4c 45 43  label-394..SELEC
c3d0: 54 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  T CAST( NULL AS 
c3e0: 53 49 47 4e 45 44 20 29 20 2b 20 2b 20 63 6f 72  SIGNED ) + + cor
c3f0: 30 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  0.col1 FROM tab0
c400: 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
c410: 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y cor0.col1..---
c420: 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d  -..NULL..NULL...
c430: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
c440: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
c450: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
c460: 6c 61 62 65 6c 2d 33 39 34 0d 0a 53 45 4c 45 43  label-394..SELEC
c470: 54 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  T CAST ( NULL AS
c480: 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2b 20 63   INTEGER ) + + c
c490: 6f 72 30 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61  or0.col1 FROM ta
c4a0: 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
c4b0: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d   BY cor0.col1..-
c4c0: 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ---..NULL..NULL.
c4d0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
c4e0: 72 74 0d 0a 53 45 4c 45 43 54 20 32 32 20 41 53  rt..SELECT 22 AS
c4f0: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
c500: 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
c510: 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30   cor0.col0, cor0
c520: 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d  .col2..----..22.
c530: 0a 32 32 0d 0a 32 32 0d 0a 0d 0a 71 75 65 72 79  .22..22....query
c540: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
c550: 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 39 39  CT DISTINCT - 99
c560: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
c570: 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b1 AS cor0 GROUP
c580: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d   BY cor0.col2..-
c590: 2d 2d 2d 0d 0a 2d 39 39 0d 0a 0d 0a 71 75 65 72  ---..-99....quer
c5a0: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
c5b0: 45 43 54 20 41 4c 4c 20 63 6f 72 30 2e 63 6f 6c  ECT ALL cor0.col
c5c0: 32 20 2a 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  2 * col2 FROM ta
c5d0: 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
c5e0: 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d   BY cor0.col2..-
c5f0: 2d 2d 2d 0d 0a 31 34 34 34 0d 0a 35 37 36 0d 0a  ---..1444..576..
c600: 36 32 34 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20  6241....query I 
c610: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
c620: 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 74 61 62  DISTINCT + + tab
c630: 32 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46  2.col0 AS col0 F
c640: 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42  ROM tab2 GROUP B
c650: 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y tab2.col0..---
c660: 2d 0d 0a 31 35 0d 0a 39 31 0d 0a 39 32 0d 0a 0d  -..15..91..92...
c670: 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
c680: 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
c690: 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
c6a0: 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
c6b0: 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
c6c0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
c6d0: 54 20 44 49 53 54 49 4e 43 54 20 74 61 62 30 2e  T DISTINCT tab0.
c6e0: 63 6f 6c 30 20 63 6f 6c 31 20 46 52 4f 4d 20 74  col0 col1 FROM t
c6f0: 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab0 GROUP BY tab
c700: 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 36  0.col0..----..26
c710: 0d 0a 34 33 0d 0a 38 33 0d 0a 0d 0a 71 75 65 72  ..43..83....quer
c720: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
c730: 45 43 54 20 44 49 53 54 49 4e 43 54 20 74 61 62  ECT DISTINCT tab
c740: 32 2e 63 6f 6c 30 20 2a 20 74 61 62 32 2e 63 6f  2.col0 * tab2.co
c750: 6c 30 20 2b 20 2b 20 74 61 62 32 2e 63 6f 6c 30  l0 + + tab2.col0
c760: 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
c770: 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d   BY tab2.col0..-
c780: 2d 2d 2d 0d 0a 32 34 30 0d 0a 38 33 37 32 0d 0a  ---..240..8372..
c790: 38 35 35 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  8556....onlyif m
c7a0: 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
c7b0: 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
c7c0: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
c7d0: 72 74 20 6c 61 62 65 6c 2d 34 30 31 0d 0a 53 45  rt label-401..SE
c7e0: 4c 45 43 54 20 41 4c 4c 20 2b 20 36 37 20 44 49  LECT ALL + 67 DI
c7f0: 56 20 2b 20 63 6f 72 30 2e 63 6f 6c 30 20 46 52  V + cor0.col0 FR
c800: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
c810: 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
c820: 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d  l0, cor0.col0..-
c830: 2d 2d 2d 0d 0a 30 0d 0a 32 0d 0a 33 0d 0a 0d 0a  ---..0..2..3....
c840: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
c850: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
c860: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
c870: 61 62 65 6c 2d 34 30 31 0d 0a 53 45 4c 45 43 54  abel-401..SELECT
c880: 20 41 4c 4c 20 2b 20 36 37 20 2f 20 2b 20 63 6f   ALL + 67 / + co
c890: 72 30 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  r0.col0 FROM tab
c8a0: 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
c8b0: 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f  BY cor0.col0, co
c8c0: 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30  r0.col0..----..0
c8d0: 0d 0a 32 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20  ..2..3....query 
c8e0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
c8f0: 54 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 41 53 20  T ALL + col2 AS 
c900: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47  col2 FROM tab1 G
c910: 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
c920: 32 0d 0a 2d 2d 2d 2d 0d 0a 34 35 0d 0a 37 31 0d  2..----..45..71.
c930: 0a 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  .8....query I ro
c940: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
c950: 4c 20 28 20 2b 20 63 6f 72 30 2e 63 6f 6c 32 20  L ( + cor0.col2 
c960: 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
c970: 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab1 AS cor0 GROU
c980: 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20  P BY cor0.col0, 
c990: 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  cor0.col2..----.
c9a0: 0a 34 35 0d 0a 37 31 0d 0a 38 0d 0a 0d 0a 6f 6e  .45..71..8....on
c9b0: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
c9c0: 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
c9d0: 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
c9e0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
c9f0: 30 34 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c  04..SELECT - col
ca00: 30 20 44 49 56 20 2b 20 32 36 20 46 52 4f 4d 20  0 DIV + 26 FROM 
ca10: 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61  tab0 GROUP BY ta
ca20: 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b0.col0..----..-
ca30: 31 0d 0a 2d 31 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69  1..-1..-3....ski
ca40: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
ca50: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
ca60: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
ca70: 6c 2d 34 30 34 0d 0a 53 45 4c 45 43 54 20 2d 20  l-404..SELECT - 
ca80: 63 6f 6c 30 20 2f 20 2b 20 32 36 20 46 52 4f 4d  col0 / + 26 FROM
ca90: 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
caa0: 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0.col0..----..
cab0: 2d 31 0d 0a 2d 31 0d 0a 2d 33 0d 0a 0d 0a 71 75  -1..-1..-3....qu
cac0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
cad0: 45 4c 45 43 54 20 34 34 20 41 53 20 63 6f 6c 31  ELECT 44 AS col1
cae0: 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
caf0: 20 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d   BY tab0.col1..-
cb00: 2d 2d 2d 0d 0a 34 34 0d 0a 34 34 0d 0a 0d 0a 71  ---..44..44....q
cb10: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
cb20: 53 45 4c 45 43 54 20 2b 20 2b 20 39 31 20 41 53  SELECT + + 91 AS
cb30: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
cb40: 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f  GROUP BY tab0.co
cb50: 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 39 31 0d 0a 39 31  l1..----..91..91
cb60: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
cb70: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
cb80: 49 4e 43 54 20 2b 20 4e 55 4c 4c 49 46 20 28 20  INCT + NULLIF ( 
cb90: 2b 20 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c  + col2, cor0.col
cba0: 32 20 29 20 2d 20 63 6f 72 30 2e 63 6f 6c 32 20  2 ) - cor0.col2 
cbb0: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
cbc0: 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  0 AS cor0 GROUP 
cbd0: 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d  BY cor0.col2..--
cbe0: 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  --..NULL....quer
cbf0: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
cc00: 45 43 54 20 63 6f 72 30 2e 63 6f 6c 30 20 2b 20  ECT cor0.col0 + 
cc10: 63 6f 72 30 2e 63 6f 6c 31 20 41 53 20 63 6f 6c  cor0.col1 AS col
cc20: 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  0 FROM tab0 AS c
cc30: 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
cc40: 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c  0.col1, cor0.col
cc50: 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 34 0d 0a 32 36  0..----..124..26
cc60: 0d 0a 38 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..83....query I 
cc70: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
cc80: 44 49 53 54 49 4e 43 54 20 33 30 20 46 52 4f 4d  DISTINCT 30 FROM
cc90: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52   tab1 AS cor0 GR
cca0: 4f 55 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d  OUP BY col0..---
ccb0: 2d 0d 0a 33 30 0d 0a 0d 0a 71 75 65 72 79 20 49  -..30....query I
ccc0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
ccd0: 20 41 4c 4c 20 28 20 39 30 20 29 20 41 53 20 63   ALL ( 90 ) AS c
cce0: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 63 6f  ol1 FROM tab0 co
ccf0: 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 30  r0 GROUP BY col0
cd00: 0d 0a 2d 2d 2d 2d 0d 0a 39 30 0d 0a 39 30 0d 0a  ..----..90..90..
cd10: 39 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  90....query I ro
cd20: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
cd30: 2b 20 36 37 20 41 53 20 63 6f 6c 32 20 46 52 4f  + 67 AS col2 FRO
cd40: 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
cd50: 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab2.col0..----.
cd60: 0a 36 37 0d 0a 36 37 0d 0a 36 37 0d 0a 0d 0a 71  .67..67..67....q
cd70: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
cd80: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
cd90: 2b 20 31 38 20 41 53 20 63 6f 6c 30 20 46 52 4f  + 18 AS col0 FRO
cda0: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
cdb0: 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
cdc0: 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 0d 0a 0d 0a 71  0..----..18....q
cdd0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
cde0: 53 45 4c 45 43 54 20 2d 20 2b 20 35 33 20 46 52  SELECT - + 53 FR
cdf0: 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59  OM tab0 GROUP BY
ce00: 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   tab0.col1..----
ce10: 0d 0a 2d 35 33 0d 0a 2d 35 33 0d 0a 0d 0a 6f 6e  ..-53..-53....on
ce20: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
ce30: 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
ce40: 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
ce50: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
ce60: 31 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  14..SELECT ALL +
ce70: 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
ce80: 49 47 4e 45 44 20 29 20 2a 20 2b 20 35 35 20 46  IGNED ) * + 55 F
ce90: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
cea0: 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31   CROSS JOIN tab1
ceb0: 20 41 53 20 63 6f 72 31 20 47 52 4f 55 50 20 42   AS cor1 GROUP B
cec0: 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y cor0.col2..---
ced0: 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
cee0: 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
cef0: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
cf00: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
cf10: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 31 34 0d  wsort label-414.
cf20: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 41  .SELECT ALL + CA
cf30: 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
cf40: 45 47 45 52 20 29 20 2a 20 2b 20 35 35 20 46 52  EGER ) * + 55 FR
cf50: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
cf60: 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 20  CROSS JOIN tab1 
cf70: 41 53 20 63 6f 72 31 20 47 52 4f 55 50 20 42 59  AS cor1 GROUP BY
cf80: 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   cor0.col2..----
cf90: 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
cfa0: 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  LL....query I ro
cfb0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
cfc0: 53 54 49 4e 43 54 20 2b 20 63 6f 6c 31 20 41 53  STINCT + col1 AS
cfd0: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
cfe0: 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
cff0: 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d 0a 35 37  l1..----..44..57
d000: 0d 0a 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..6....query I r
d010: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
d020: 20 32 37 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   27 AS col1 FROM
d030: 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52   tab0 AS cor0 GR
d040: 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31  OUP BY cor0.col1
d050: 0d 0a 2d 2d 2d 2d 0d 0a 32 37 0d 0a 32 37 0d 0a  ..----..27..27..
d060: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
d070: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
d080: 33 31 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f  31 FROM tab1 GRO
d090: 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 30 0d  UP BY tab1.col0.
d0a0: 0a 2d 2d 2d 2d 0d 0a 33 31 0d 0a 33 31 0d 0a 33  .----..31..31..3
d0b0: 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
d0c0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 35  sort..SELECT - 5
d0d0: 39 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  9 FROM tab1 GROU
d0e0: 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a  P BY tab1.col2..
d0f0: 2d 2d 2d 2d 0d 0a 2d 35 39 0d 0a 2d 35 39 0d 0a  ----..-59..-59..
d100: 2d 35 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  -59....skipif po
d110: 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
d120: 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
d130: 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
d140: 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
d150: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
d160: 0a 53 45 4c 45 43 54 20 39 37 20 63 6f 6c 32 20  .SELECT 97 col2 
d170: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
d180: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
d190: 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 39 37 0d 0a  col0..----..97..
d1a0: 39 37 0d 0a 39 37 0d 0a 0d 0a 71 75 65 72 79 20  97..97....query 
d1b0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
d1c0: 54 20 63 6f 72 30 2e 63 6f 6c 30 20 2b 20 63 6f  T cor0.col0 + co
d1d0: 72 30 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20  r0.col0 AS col1 
d1e0: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
d1f0: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
d200: 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d  col0, cor0.col0.
d210: 0a 2d 2d 2d 2d 0d 0a 31 38 32 0d 0a 31 38 34 0d  .----..182..184.
d220: 0a 33 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  .30....skipif po
d230: 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
d240: 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
d250: 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
d260: 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
d270: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
d280: 0a 53 45 4c 45 43 54 20 39 30 20 63 6f 6c 31 20  .SELECT 90 col1 
d290: 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
d2a0: 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d  BY tab0.col0..--
d2b0: 2d 2d 0d 0a 39 30 0d 0a 39 30 0d 0a 39 30 0d 0a  --..90..90..90..
d2c0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
d2d0: 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 32 20  t..SELECT + + 2 
d2e0: 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
d2f0: 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab0.col1..--
d300: 2d 2d 0d 0a 32 0d 0a 32 0d 0a 0d 0a 71 75 65 72  --..2..2....quer
d310: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
d320: 45 43 54 20 44 49 53 54 49 4e 43 54 20 36 37 20  ECT DISTINCT 67 
d330: 2d 20 34 37 20 46 52 4f 4d 20 74 61 62 32 20 47  - 47 FROM tab2 G
d340: 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
d350: 30 0d 0a 2d 2d 2d 2d 0d 0a 32 30 0d 0a 0d 0a 71  0..----..20....q
d360: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
d370: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
d380: 2b 20 33 31 20 46 52 4f 4d 20 74 61 62 31 20 47  + 31 FROM tab1 G
d390: 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
d3a0: 32 0d 0a 2d 2d 2d 2d 0d 0a 33 31 0d 0a 0d 0a 71  2..----..31....q
d3b0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
d3c0: 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 72  SELECT ALL + cor
d3d0: 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  0.col2 FROM tab2
d3e0: 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
d3f0: 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72  Y cor0.col1, cor
d400: 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c  0.col0, cor0.col
d410: 32 0d 0a 2d 2d 2d 2d 0d 0a 35 38 0d 0a 37 39 0d  2..----..58..79.
d420: 0a 38 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .87....query I r
d430: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 39  owsort..SELECT 9
d440: 33 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  3 AS col0 FROM t
d450: 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab0 AS cor0 GROU
d460: 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20  P BY cor0.col1, 
d470: 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor0.col0..----.
d480: 0a 39 33 0d 0a 39 33 0d 0a 39 33 0d 0a 0d 0a 71  .93..93..93....q
d490: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
d4a0: 53 45 4c 45 43 54 20 2b 20 39 39 20 2b 20 63 6f  SELECT + 99 + co
d4b0: 6c 31 20 2a 20 2d 20 63 6f 72 30 2e 63 6f 6c 32  l1 * - cor0.col2
d4c0: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
d4d0: 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
d4e0: 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 32  .col1, cor0.col2
d4f0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 36 36 0d 0a 2d  ..----..-2466..-
d500: 33 30 32 35 0d 0a 35 31 0d 0a 0d 0a 71 75 65 72  3025..51....quer
d510: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
d520: 45 43 54 20 41 4c 4c 20 2d 20 63 6f 72 30 2e 63  ECT ALL - cor0.c
d530: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
d540: 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
d550: 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63  or0.col1, cor0.c
d560: 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 0d 0a  ol0..----..-15..
d570: 2d 39 31 0d 0a 2d 39 32 0d 0a 0d 0a 71 75 65 72  -91..-92....quer
d580: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
d590: 45 43 54 20 44 49 53 54 49 4e 43 54 20 35 33 20  ECT DISTINCT 53 
d5a0: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
d5b0: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
d5c0: 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 35 33 0d 0a  col1..----..53..
d5d0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
d5e0: 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 72 30  t..SELECT - cor0
d5f0: 2e 63 6f 6c 31 20 2b 20 63 6f 6c 32 20 46 52 4f  .col1 + col2 FRO
d600: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
d610: 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
d620: 31 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d  1, cor0.col2..--
d630: 2d 2d 0d 0a 31 37 0d 0a 32 30 0d 0a 32 36 0d 0a  --..17..20..26..
d640: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
d650: 74 0d 0a 53 45 4c 45 43 54 20 2d 20 74 61 62 32  t..SELECT - tab2
d660: 2e 63 6f 6c 31 20 2a 20 32 35 20 46 52 4f 4d 20  .col1 * 25 FROM 
d670: 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61  tab2 GROUP BY ta
d680: 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  b2.col1..----..-
d690: 31 30 32 35 0d 0a 2d 31 34 37 35 0d 0a 2d 31 35  1025..-1475..-15
d6a0: 32 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  25....query I ro
d6b0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
d6c0: 4c 20 33 32 20 46 52 4f 4d 20 74 61 62 31 20 47  L 32 FROM tab1 G
d6d0: 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
d6e0: 31 0d 0a 2d 2d 2d 2d 0d 0a 33 32 0d 0a 33 32 0d  1..----..32..32.
d6f0: 0a 33 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .32....query I r
d700: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
d710: 6f 72 30 2e 63 6f 6c 30 20 2a 20 2b 20 63 6f 72  or0.col0 * + cor
d720: 30 2e 63 6f 6c 30 20 2b 20 2b 20 63 6f 72 30 2e  0.col0 + + cor0.
d730: 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f  col0 AS col1 FRO
d740: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
d750: 52 4f 55 50 20 42 59 20 63 6f 6c 30 2c 20 63 6f  ROUP BY col0, co
d760: 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 32  r0.col1..----..2
d770: 34 30 0d 0a 38 33 37 32 0d 0a 38 35 35 36 0d 0a  40..8372..8556..
d780: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
d790: 74 0d 0a 53 45 4c 45 43 54 20 33 36 20 41 53 20  t..SELECT 36 AS 
d7a0: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47  col2 FROM tab1 G
d7b0: 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
d7c0: 30 0d 0a 2d 2d 2d 2d 0d 0a 33 36 0d 0a 33 36 0d  0..----..36..36.
d7d0: 0a 33 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .36....query I r
d7e0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
d7f0: 4c 4c 20 2d 20 2b 20 28 20 34 36 20 29 20 41 53  LL - + ( 46 ) AS
d800: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
d810: 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f  GROUP BY tab0.co
d820: 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 0d 0a 2d  l1..----..-46..-
d830: 34 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  46....skipif pos
d840: 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
d850: 65 53 51 4c 20 68 61 73 20 73 74 72 69 63 74 20  eSQL has strict 
d860: 63 6f 6c 75 6d 6e 20 75 73 61 67 65 20 66 6f 72  column usage for
d870: 20 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73 65   GROUP BY clause
d880: 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
d890: 72 74 0d 0a 53 45 4c 45 43 54 20 4e 55 4c 4c 49  rt..SELECT NULLI
d8a0: 46 20 28 20 2d 20 63 6f 6c 32 2c 20 74 61 62 30  F ( - col2, tab0
d8b0: 2e 63 6f 6c 32 20 2a 20 2d 20 43 4f 41 4c 45 53  .col2 * - COALES
d8c0: 43 45 20 28 20 2b 20 35 39 2c 20 63 6f 6c 31 2c  CE ( + 59, col1,
d8d0: 20 63 6f 6c 32 20 29 20 29 20 2b 20 43 4f 41 4c   col2 ) ) + COAL
d8e0: 45 53 43 45 20 28 20 38 33 2c 20 74 61 62 30 2e  ESCE ( 83, tab0.
d8f0: 63 6f 6c 32 20 2b 20 2d 20 28 20 74 61 62 30 2e  col2 + - ( tab0.
d900: 63 6f 6c 32 20 29 20 2a 20 2b 20 74 61 62 30 2e  col2 ) * + tab0.
d910: 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 31 20 46  col2 ) AS col1 F
d920: 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42  ROM tab0 GROUP B
d930: 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab0.col2..---
d940: 2d 0d 0a 34 0d 0a 34 35 0d 0a 35 39 0d 0a 0d 0a  -..4..45..59....
d950: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
d960: 0a 53 45 4c 45 43 54 20 37 32 20 2b 20 2d 20 74  .SELECT 72 + - t
d970: 61 62 31 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61  ab1.col2 FROM ta
d980: 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31  b1 GROUP BY tab1
d990: 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a  .col2..----..1..
d9a0: 32 37 0d 0a 36 34 0d 0a 0d 0a 71 75 65 72 79 20  27..64....query 
d9b0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
d9c0: 54 20 41 4c 4c 20 2b 20 31 39 20 46 52 4f 4d 20  T ALL + 19 FROM 
d9d0: 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f  tab0 AS cor0 GRO
d9e0: 55 50 20 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d  UP BY col1..----
d9f0: 0d 0a 31 39 0d 0a 31 39 0d 0a 0d 0a 71 75 65 72  ..19..19....quer
da00: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
da10: 45 43 54 20 44 49 53 54 49 4e 43 54 20 32 37 20  ECT DISTINCT 27 
da20: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
da30: 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
da40: 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d  BY cor0.col1..--
da50: 2d 2d 0d 0a 32 37 0d 0a 0d 0a 71 75 65 72 79 20  --..27....query 
da60: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
da70: 54 20 44 49 53 54 49 4e 43 54 20 2b 20 28 20 36  T DISTINCT + ( 6
da80: 36 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  6 ) AS col2 FROM
da90: 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 43 52   tab2 AS cor0 CR
daa0: 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53  OSS JOIN tab1 AS
dab0: 20 63 6f 72 31 20 47 52 4f 55 50 20 42 59 20 63   cor1 GROUP BY c
dac0: 6f 72 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  or1.col1..----..
dad0: 36 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  66....query I ro
dae0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
daf0: 4c 20 2b 20 2b 20 74 61 62 31 2e 63 6f 6c 32 20  L + + tab1.col2 
db00: 2a 20 2b 20 32 32 20 41 53 20 63 6f 6c 31 20 46  * + 22 AS col1 F
db10: 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
db20: 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 35  Y col2..----..15
db30: 36 32 0d 0a 31 37 36 0d 0a 39 39 30 0d 0a 0d 0a  62..176..990....
db40: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
db50: 0a 53 45 4c 45 43 54 20 37 33 20 2b 20 32 32 20  .SELECT 73 + 22 
db60: 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20  FROM tab1 GROUP 
db70: 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab1.col1..--
db80: 2d 2d 0d 0a 39 35 0d 0a 39 35 0d 0a 39 35 0d 0a  --..95..95..95..
db90: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
dba0: 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 74 61  t..SELECT - + ta
dbb0: 62 32 2e 63 6f 6c 30 20 2a 20 33 31 20 46 52 4f  b2.col0 * 31 FRO
dbc0: 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
dbd0: 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab2.col0..----.
dbe0: 0a 2d 32 38 32 31 0d 0a 2d 32 38 35 32 0d 0a 2d  .-2821..-2852..-
dbf0: 34 36 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  465....skipif po
dc00: 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
dc10: 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
dc20: 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
dc30: 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
dc40: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
dc50: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
dc60: 20 63 6f 72 30 2e 63 6f 6c 32 20 2a 20 2d 20 63   cor0.col2 * - c
dc70: 6f 72 30 2e 63 6f 6c 32 20 2b 20 63 6f 72 30 2e  or0.col2 + cor0.
dc80: 63 6f 6c 32 20 63 6f 6c 30 20 46 52 4f 4d 20 74  col2 col0 FROM t
dc90: 61 62 30 20 63 6f 72 30 20 47 52 4f 55 50 20 42  ab0 cor0 GROUP B
dca0: 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y cor0.col2..---
dcb0: 2d 0d 0a 2d 31 34 30 36 0d 0a 2d 35 35 32 0d 0a  -..-1406..-552..
dcc0: 2d 36 31 36 32 0d 0a 0d 0a 73 6b 69 70 69 66 20  -6162....skipif 
dcd0: 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
dce0: 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
dcf0: 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
dd00: 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
dd10: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
dd20: 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
dd30: 43 54 20 2b 20 2d 20 38 30 20 63 6f 6c 32 20 46  CT + - 80 col2 F
dd40: 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42  ROM tab2 GROUP B
dd50: 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y tab2.col0..---
dd60: 2d 0d 0a 2d 38 30 0d 0a 0d 0a 6f 6e 6c 79 69 66  -..-80....onlyif
dd70: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
dd80: 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
dd90: 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
dda0: 73 6f 72 74 20 6c 61 62 65 6c 2d 34 34 36 0d 0a  sort label-446..
ddb0: 53 45 4c 45 43 54 20 2b 20 43 41 53 54 28 20 33  SELECT + CAST( 3
ddc0: 38 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53  8 AS SIGNED ) AS
ddd0: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
dde0: 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
ddf0: 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 33 38 0d 0a 33 38  l0..----..38..38
de00: 0d 0a 33 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..38....skipif m
de10: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
de20: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
de30: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 34 36  owsort label-446
de40: 0d 0a 53 45 4c 45 43 54 20 2b 20 43 41 53 54 20  ..SELECT + CAST 
de50: 28 20 33 38 20 41 53 20 49 4e 54 45 47 45 52 20  ( 38 AS INTEGER 
de60: 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
de70: 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab2 GROUP BY tab
de80: 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 33 38  2.col0..----..38
de90: 0d 0a 33 38 0d 0a 33 38 0d 0a 0d 0a 71 75 65 72  ..38..38....quer
dea0: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
deb0: 45 43 54 20 2d 20 74 61 62 30 2e 63 6f 6c 30 20  ECT - tab0.col0 
dec0: 2b 20 2d 20 74 61 62 30 2e 63 6f 6c 30 20 46 52  + - tab0.col0 FR
ded0: 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59  OM tab0 GROUP BY
dee0: 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   tab0.col0..----
def0: 0d 0a 2d 31 36 36 0d 0a 2d 35 32 0d 0a 2d 38 36  ..-166..-52..-86
df00: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
df10: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
df20: 49 4e 43 54 20 2b 20 39 31 20 41 53 20 63 6f 6c  INCT + 91 AS col
df30: 31 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  1 FROM tab1 GROU
df40: 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a  P BY tab1.col2..
df50: 2d 2d 2d 2d 0d 0a 39 31 0d 0a 0d 0a 71 75 65 72  ----..91....quer
df60: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
df70: 45 43 54 20 2b 20 38 30 20 2b 20 74 61 62 30 2e  ECT + 80 + tab0.
df80: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47  col2 FROM tab0 G
df90: 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c  ROUP BY tab0.col
dfa0: 32 0d 0a 2d 2d 2d 2d 0d 0a 31 30 34 0d 0a 31 31  2..----..104..11
dfb0: 38 0d 0a 31 35 39 0d 0a 0d 0a 73 6b 69 70 69 66  8..159....skipif
dfc0: 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
dfd0: 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
dfe0: 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
dff0: 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
e000: 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
e010: 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 38  rt..SELECT + + 8
e020: 36 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  6 col1 FROM tab2
e030: 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63   GROUP BY tab2.c
e040: 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 38 36 0d 0a 38  ol1..----..86..8
e050: 36 0d 0a 38 36 0d 0a 0d 0a 71 75 65 72 79 20 49  6..86....query I
e060: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
e070: 20 2b 20 38 39 20 46 52 4f 4d 20 74 61 62 31 20   + 89 FROM tab1 
e080: 47 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d  GROUP BY col2..-
e090: 2d 2d 2d 0d 0a 38 39 0d 0a 38 39 0d 0a 38 39 0d  ---..89..89..89.
e0a0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
e0b0: 72 74 0d 0a 53 45 4c 45 43 54 20 32 32 20 46 52  rt..SELECT 22 FR
e0c0: 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 47 52 4f  OM tab1 cor0 GRO
e0d0: 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d  UP BY cor0.col2.
e0e0: 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32 32 0d 0a 32  .----..22..22..2
e0f0: 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
e100: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 72  sort..SELECT cor
e110: 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46  0.col2 AS col1 F
e120: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
e130: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
e140: 6f 6c 32 20 48 41 56 49 4e 47 20 4e 4f 54 20 4e  ol2 HAVING NOT N
e150: 55 4c 4c 20 4e 4f 54 20 49 4e 20 28 20 63 6f 72  ULL NOT IN ( cor
e160: 30 2e 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a  0.col2 )..----..
e170: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
e180: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
e190: 74 61 62 31 2e 63 6f 6c 32 20 2a 20 2d 20 74 61  tab1.col2 * - ta
e1a0: 62 31 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  b1.col2 FROM tab
e1b0: 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
e1c0: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32 30 32 35  col2..----..2025
e1d0: 0d 0a 35 30 34 31 0d 0a 36 34 0d 0a 0d 0a 71 75  ..5041..64....qu
e1e0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
e1f0: 45 4c 45 43 54 20 2d 20 74 61 62 32 2e 63 6f 6c  ELECT - tab2.col
e200: 32 20 2a 20 2b 20 31 33 20 2d 20 2d 20 74 61 62  2 * + 13 - - tab
e210: 32 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  2.col2 FROM tab2
e220: 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63   GROUP BY tab2.c
e230: 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 34 34  ol2..----..-1044
e240: 0d 0a 2d 36 39 36 0d 0a 2d 39 34 38 0d 0a 0d 0a  ..-696..-948....
e250: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
e260: 0a 53 45 4c 45 43 54 20 2d 20 36 20 2a 20 2d 20  .SELECT - 6 * - 
e270: 38 37 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f  87 FROM tab1 GRO
e280: 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d  UP BY tab1.col2.
e290: 0a 2d 2d 2d 2d 0d 0a 35 32 32 0d 0a 35 32 32 0d  .----..522..522.
e2a0: 0a 35 32 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .522....query I 
e2b0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
e2c0: 2b 20 36 31 20 46 52 4f 4d 20 74 61 62 31 20 47  + 61 FROM tab1 G
e2d0: 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
e2e0: 32 0d 0a 2d 2d 2d 2d 0d 0a 36 31 0d 0a 36 31 0d  2..----..61..61.
e2f0: 0a 36 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .61....query I r
e300: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
e310: 49 53 54 49 4e 43 54 20 74 61 62 30 2e 63 6f 6c  ISTINCT tab0.col
e320: 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  2 AS col0 FROM t
e330: 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab0 GROUP BY tab
e340: 30 2e 63 6f 6c 32 20 48 41 56 49 4e 47 20 4e 4f  0.col2 HAVING NO
e350: 54 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a  T NULL IS NULL..
e360: 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
e370: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
e380: 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20 46 52  DISTINCT col1 FR
e390: 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
e3a0: 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d   col1..----..44.
e3b0: 0a 35 37 0d 0a 36 0d 0a 0d 0a 71 75 65 72 79 20  .57..6....query 
e3c0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
e3d0: 54 20 31 30 20 2b 20 2b 20 63 6f 72 30 2e 63 6f  T 10 + + cor0.co
e3e0: 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l0 AS col2 FROM 
e3f0: 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f  tab1 AS cor0 GRO
e400: 55 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d  UP BY col0..----
e410: 0d 0a 33 32 0d 0a 33 38 0d 0a 39 32 0d 0a 0d 0a  ..32..38..92....
e420: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
e430: 0a 53 45 4c 45 43 54 20 2b 20 33 37 20 2a 20 2b  .SELECT + 37 * +
e440: 20 63 6f 72 31 2e 63 6f 6c 31 20 46 52 4f 4d 20   cor1.col1 FROM 
e450: 74 61 62 32 20 41 53 20 63 6f 72 30 20 43 52 4f  tab2 AS cor0 CRO
e460: 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 41 53 20  SS JOIN tab2 AS 
e470: 63 6f 72 31 20 47 52 4f 55 50 20 42 59 20 63 6f  cor1 GROUP BY co
e480: 72 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31  r1.col1..----..1
e490: 35 31 37 0d 0a 32 31 38 33 0d 0a 32 32 35 37 0d  517..2183..2257.
e4a0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
e4b0: 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 72  rt..SELECT - cor
e4c0: 31 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  1.col0 FROM tab2
e4d0: 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a   AS cor0 CROSS J
e4e0: 4f 49 4e 20 74 61 62 30 20 41 53 20 63 6f 72 31  OIN tab0 AS cor1
e4f0: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 31 2e 63   GROUP BY cor1.c
e500: 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 36 0d 0a  ol0..----..-26..
e510: 2d 34 33 0d 0a 2d 38 33 0d 0a 0d 0a 71 75 65 72  -43..-83....quer
e520: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
e530: 45 43 54 20 41 4c 4c 20 2b 20 74 61 62 32 2e 63  ECT ALL + tab2.c
e540: 6f 6c 30 20 2a 20 74 61 62 32 2e 63 6f 6c 30 20  ol0 * tab2.col0 
e550: 2b 20 38 34 20 46 52 4f 4d 20 74 61 62 32 20 47  + 84 FROM tab2 G
e560: 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
e570: 30 0d 0a 2d 2d 2d 2d 0d 0a 33 30 39 0d 0a 38 33  0..----..309..83
e580: 36 35 0d 0a 38 35 34 38 0d 0a 0d 0a 6f 6e 6c 79  65..8548....only
e590: 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
e5a0: 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
e5b0: 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
e5c0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 36 34  owsort label-464
e5d0: 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 72 30 2e  ..SELECT + cor0.
e5e0: 63 6f 6c 30 20 44 49 56 20 63 6f 72 30 2e 63 6f  col0 DIV cor0.co
e5f0: 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  l0 FROM tab2 cor
e600: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
e610: 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d  col2, cor0.col0.
e620: 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a  .----..1..1..1..
e630: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
e640: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
e650: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
e660: 20 6c 61 62 65 6c 2d 34 36 34 0d 0a 53 45 4c 45   label-464..SELE
e670: 43 54 20 2b 20 63 6f 72 30 2e 63 6f 6c 30 20 2f  CT + cor0.col0 /
e680: 20 63 6f 72 30 2e 63 6f 6c 30 20 46 52 4f 4d 20   cor0.col0 FROM 
e690: 74 61 62 32 20 63 6f 72 30 20 47 52 4f 55 50 20  tab2 cor0 GROUP 
e6a0: 42 59 20 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f  BY cor0.col2, co
e6b0: 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31  r0.col0..----..1
e6c0: 0d 0a 31 0d 0a 31 0d 0a 0d 0a 71 75 65 72 79 20  ..1..1....query 
e6d0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
e6e0: 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 74  T DISTINCT - + t
e6f0: 61 62 31 2e 63 6f 6c 32 20 2b 20 63 6f 6c 32 20  ab1.col2 + col2 
e700: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
e710: 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
e720: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  col2..----..0...
e730: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
e740: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
e750: 54 20 2d 20 2b 20 74 61 62 30 2e 63 6f 6c 32 20  T - + tab0.col2 
e760: 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
e770: 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
e780: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 0d  col2..----..-24.
e790: 0a 2d 33 38 0d 0a 2d 37 39 0d 0a 0d 0a 71 75 65  .-38..-79....que
e7a0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
e7b0: 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c 32 20 41  LECT cor0.col2 A
e7c0: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
e7d0: 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
e7e0: 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 6c  Y cor0.col0, col
e7f0: 32 0d 0a 2d 2d 2d 2d 0d 0a 35 38 0d 0a 37 39 0d  2..----..58..79.
e800: 0a 38 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .87....query I r
e810: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
e820: 49 53 54 49 4e 43 54 20 2b 20 2d 20 28 20 2b 20  ISTINCT + - ( + 
e830: 74 61 62 31 2e 63 6f 6c 32 20 29 20 46 52 4f 4d  tab1.col2 ) FROM
e840: 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 63   tab1 GROUP BY c
e850: 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 35 0d 0a  ol2..----..-45..
e860: 2d 37 31 0d 0a 2d 38 0d 0a 0d 0a 71 75 65 72 79  -71..-8....query
e870: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
e880: 43 54 20 2d 20 32 38 20 46 52 4f 4d 20 74 61 62  CT - 28 FROM tab
e890: 31 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 30 0d  1 GROUP BY col0.
e8a0: 0a 2d 2d 2d 2d 0d 0a 2d 32 38 0d 0a 2d 32 38 0d  .----..-28..-28.
e8b0: 0a 2d 32 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-28....query I 
e8c0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
e8d0: 2d 20 34 39 20 41 53 20 63 6f 6c 32 20 46 52 4f  - 49 AS col2 FRO
e8e0: 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
e8f0: 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 39 0d  col1..----..-49.
e900: 0a 2d 34 39 0d 0a 2d 34 39 0d 0a 0d 0a 71 75 65  .-49..-49....que
e910: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
e920: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
e930: 2b 20 74 61 62 30 2e 63 6f 6c 31 20 2a 20 2d 20  + tab0.col1 * - 
e940: 34 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  42 AS col0 FROM 
e950: 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61  tab0 GROUP BY ta
e960: 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30  b0.col1..----..0
e970: 0d 0a 33 34 30 32 0d 0a 0d 0a 71 75 65 72 79 20  ..3402....query 
e980: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
e990: 54 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 41 53  T + cor0.col1 AS
e9a0: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
e9b0: 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
e9c0: 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30   cor0.col0, cor0
e9d0: 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a  .col1..----..0..
e9e0: 30 0d 0a 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49  0..81....query I
e9f0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
ea00: 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 2a 20 63 6f   ALL + col2 * co
ea10: 72 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20  r0.col2 AS col1 
ea20: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
ea30: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
ea40: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33 33 36 34  col2..----..3364
ea50: 0d 0a 36 32 34 31 0d 0a 37 35 36 39 0d 0a 0d 0a  ..6241..7569....
ea60: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
ea70: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
ea80: 20 2d 20 2b 20 74 61 62 30 2e 63 6f 6c 30 20 2a   - + tab0.col0 *
ea90: 20 37 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52   72 FROM tab0 GR
eaa0: 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30  OUP BY tab0.col0
eab0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 37 32 0d 0a 2d  ..----..-1872..-
eac0: 33 30 39 36 0d 0a 2d 35 39 37 36 0d 0a 0d 0a 73  3096..-5976....s
ead0: 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
eae0: 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
eaf0: 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
eb00: 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
eb10: 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
eb20: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
eb30: 63 6f 72 30 2e 63 6f 6c 30 20 2a 20 2b 20 63 6f  cor0.col0 * + co
eb40: 72 30 2e 63 6f 6c 30 20 63 6f 6c 31 20 46 52 4f  r0.col0 col1 FRO
eb50: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47  M tab1 AS cor0 G
eb60: 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
eb70: 30 0d 0a 2d 2d 2d 2d 0d 0a 34 38 34 0d 0a 36 37  0..----..484..67
eb80: 32 34 0d 0a 37 38 34 0d 0a 0d 0a 71 75 65 72 79  24..784....query
eb90: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
eba0: 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20  CT DISTINCT - - 
ebb0: 74 61 62 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74  tab0.col2 FROM t
ebc0: 61 62 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c  ab0 GROUP BY col
ebd0: 32 0d 0a 2d 2d 2d 2d 0d 0a 32 34 0d 0a 33 38 0d  2..----..24..38.
ebe0: 0a 37 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .79....query I r
ebf0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
ec00: 20 37 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   72 AS col1 FROM
ec10: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52   tab1 AS cor0 GR
ec20: 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32  OUP BY cor0.col2
ec30: 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  , cor0.col0..---
ec40: 2d 0d 0a 37 32 0d 0a 37 32 0d 0a 37 32 0d 0a 0d  -..72..72..72...
ec50: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
ec60: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 74  ..SELECT ALL - t
ec70: 61 62 31 2e 63 6f 6c 30 20 2b 20 2d 20 31 35 20  ab1.col0 + - 15 
ec80: 2a 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46  * col0 AS col0 F
ec90: 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
eca0: 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y tab1.col0..---
ecb0: 2d 0d 0a 2d 31 33 31 32 0d 0a 2d 33 35 32 0d 0a  -..-1312..-352..
ecc0: 2d 34 34 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -448....query I 
ecd0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
ece0: 41 4c 4c 20 2d 20 37 35 20 41 53 20 63 6f 6c 32  ALL - 75 AS col2
ecf0: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
ed00: 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31  r0 GROUP BY col1
ed10: 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 35 0d 0a 2d 37 35  ..----..-75..-75
ed20: 0d 0a 2d 37 35 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-75....query I
ed30: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
ed40: 20 41 4c 4c 20 2d 20 2b 20 63 6f 6c 30 20 46 52   ALL - + col0 FR
ed50: 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
ed60: 20 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   tab1.col0..----
ed70: 0d 0a 2d 32 32 0d 0a 2d 32 38 0d 0a 2d 38 32 0d  ..-22..-28..-82.
ed80: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
ed90: 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20  rt..SELECT col1 
eda0: 2b 20 2d 20 74 61 62 31 2e 63 6f 6c 31 20 46 52  + - tab1.col1 FR
edb0: 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
edc0: 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   tab1.col1..----
edd0: 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65  ..0..0..0....que
ede0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
edf0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
ee00: 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f  col2 AS col2 FRO
ee10: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
ee20: 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d  ROUP BY col2..--
ee30: 2d 2d 0d 0a 35 38 0d 0a 37 39 0d 0a 38 37 0d 0a  --..58..79..87..
ee40: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
ee50: 74 0d 0a 53 45 4c 45 43 54 20 35 30 20 2a 20 2b  t..SELECT 50 * +
ee60: 20 33 36 20 46 52 4f 4d 20 74 61 62 30 20 41 53   36 FROM tab0 AS
ee70: 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
ee80: 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  or0.col2..----..
ee90: 31 38 30 30 0d 0a 31 38 30 30 0d 0a 31 38 30 30  1800..1800..1800
eea0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
eeb0: 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
eec0: 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
eed0: 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
eee0: 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
eef0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
ef00: 4c 45 43 54 20 2d 20 63 6f 72 30 2e 63 6f 6c 31  LECT - cor0.col1
ef10: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
ef20: 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
ef30: 20 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 6c 32   cor0.col2, col2
ef40: 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34  , col1..----..-4
ef50: 31 0d 0a 2d 35 39 0d 0a 2d 36 31 0d 0a 0d 0a 71  1..-59..-61....q
ef60: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
ef70: 53 45 4c 45 43 54 20 32 39 20 2a 20 2d 20 36 36  SELECT 29 * - 66
ef80: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
ef90: 62 32 2c 20 74 61 62 30 20 41 53 20 63 6f 72 30  b2, tab0 AS cor0
efa0: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
efb0: 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 31 34  ol2..----..-1914
efc0: 0d 0a 2d 31 39 31 34 0d 0a 2d 31 39 31 34 0d 0a  ..-1914..-1914..
efd0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
efe0: 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
eff0: 43 54 20 74 61 62 30 2e 63 6f 6c 30 20 41 53 20  CT tab0.col0 AS 
f000: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 47  col1 FROM tab0 G
f010: 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c  ROUP BY tab0.col
f020: 30 0d 0a 2d 2d 2d 2d 0d 0a 32 36 0d 0a 34 33 0d  0..----..26..43.
f030: 0a 38 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .83....query I r
f040: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
f050: 49 53 54 49 4e 43 54 20 74 61 62 32 2e 63 6f 6c  ISTINCT tab2.col
f060: 30 20 2f 20 74 61 62 32 2e 63 6f 6c 30 20 46 52  0 / tab2.col0 FR
f070: 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 55  OM tab2 WHERE NU
f080: 4c 4c 20 49 4e 20 28 20 2d 20 74 61 62 32 2e 63  LL IN ( - tab2.c
f090: 6f 6c 31 20 29 20 47 52 4f 55 50 20 42 59 20 74  ol1 ) GROUP BY t
f0a0: 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab2.col0..----..
f0b0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
f0c0: 74 0d 0a 53 45 4c 45 43 54 20 2d 20 74 61 62 31  t..SELECT - tab1
f0d0: 2e 63 6f 6c 32 20 2b 20 2d 20 74 61 62 31 2e 63  .col2 + - tab1.c
f0e0: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol2 FROM tab1 GR
f0f0: 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d  OUP BY col2..---
f100: 2d 0d 0a 2d 31 34 32 0d 0a 2d 31 36 0d 0a 2d 39  -..-142..-16..-9
f110: 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
f120: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d  sort..SELECT + -
f130: 20 36 39 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   69 AS col2 FROM
f140: 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
f150: 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0.col0..----..
f160: 2d 36 39 0d 0a 2d 36 39 0d 0a 2d 36 39 0d 0a 0d  -69..-69..-69...
f170: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
f180: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
f190: 54 20 2b 20 74 61 62 31 2e 63 6f 6c 30 20 2a 20  T + tab1.col0 * 
f1a0: 74 61 62 31 2e 63 6f 6c 30 20 46 52 4f 4d 20 74  tab1.col0 FROM t
f1b0: 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
f1c0: 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 34 38  1.col0..----..48
f1d0: 34 0d 0a 36 37 32 34 0d 0a 37 38 34 0d 0a 0d 0a  4..6724..784....
f1e0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
f1f0: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
f200: 20 2b 20 31 30 20 2a 20 74 61 62 30 2e 63 6f 6c   + 10 * tab0.col
f210: 30 20 2b 20 2d 20 74 61 62 30 2e 63 6f 6c 30 20  0 + - tab0.col0 
f220: 2a 20 74 61 62 30 2e 63 6f 6c 30 20 41 53 20 63  * tab0.col0 AS c
f230: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol1 FROM tab0 GR
f240: 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30  OUP BY tab0.col0
f250: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 31 39 0d 0a 2d  ..----..-1419..-
f260: 34 31 36 0d 0a 2d 36 30 35 39 0d 0a 0d 0a 73 6b  416..-6059....sk
f270: 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
f280: 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
f290: 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
f2a0: 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
f2b0: 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
f2c0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 39  owsort..SELECT 9
f2d0: 39 20 2b 20 2b 20 74 61 62 31 2e 63 6f 6c 31 20  9 + + tab1.col1 
f2e0: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 47  col1 FROM tab1 G
f2f0: 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
f300: 31 0d 0a 2d 2d 2d 2d 0d 0a 31 30 35 0d 0a 31 34  1..----..105..14
f310: 33 0d 0a 31 35 36 0d 0a 0d 0a 71 75 65 72 79 20  3..156....query 
f320: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
f330: 54 20 41 4c 4c 20 63 6f 72 30 2e 63 6f 6c 31 20  T ALL cor0.col1 
f340: 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
f350: 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
f360: 42 59 20 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f  BY col1, cor0.co
f370: 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d 0a 35 37  l1..----..44..57
f380: 0d 0a 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ..6....onlyif my
f390: 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
f3a0: 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
f3b0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
f3c0: 74 20 6c 61 62 65 6c 2d 34 39 34 0d 0a 53 45 4c  t label-494..SEL
f3d0: 45 43 54 20 34 31 20 44 49 56 20 2b 20 63 6f 72  ECT 41 DIV + cor
f3e0: 30 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46  0.col0 AS col1 F
f3f0: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
f400: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
f410: 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d  ol0..----..0..0.
f420: 0a 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .2....skipif mys
f430: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
f440: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
f450: 73 6f 72 74 20 6c 61 62 65 6c 2d 34 39 34 0d 0a  sort label-494..
f460: 53 45 4c 45 43 54 20 34 31 20 2f 20 2b 20 63 6f  SELECT 41 / + co
f470: 72 30 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20  r0.col0 AS col1 
f480: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
f490: 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
f4a0: 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30  col0..----..0..0
f4b0: 0d 0a 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..2....query I r
f4c0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
f4d0: 20 38 33 20 46 52 4f 4d 20 74 61 62 31 20 47 52   83 FROM tab1 GR
f4e0: 4f 55 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d  OUP BY col0..---
f4f0: 2d 0d 0a 2d 38 33 0d 0a 2d 38 33 0d 0a 2d 38 33  -..-83..-83..-83
f500: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
f510: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 37 32  ort..SELECT - 72
f520: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
f530: 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32  b2 GROUP BY tab2
f540: 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 32  .col0..----..-72
f550: 0d 0a 2d 37 32 0d 0a 2d 37 32 0d 0a 0d 0a 73 6b  ..-72..-72....sk
f560: 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
f570: 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
f580: 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
f590: 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
f5a0: 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
f5b0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
f5c0: 4c 4c 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 63  LL + cor0.col1 c
f5d0: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
f5e0: 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
f5f0: 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 38 31  ol1..----..0..81
f600: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
f610: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
f620: 49 4e 43 54 20 74 61 62 30 2e 63 6f 6c 31 20 2a  INCT tab0.col1 *
f630: 20 35 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52   52 FROM tab0 GR
f640: 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 31  OUP BY tab0.col1
f650: 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 34 32 31 32 0d  ..----..0..4212.
f660: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
f670: 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
f680: 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
f690: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
f6a0: 62 65 6c 2d 34 39 39 0d 0a 53 45 4c 45 43 54 20  bel-499..SELECT 
f6b0: 43 41 53 54 28 20 2d 20 32 37 20 41 53 20 53 49  CAST( - 27 AS SI
f6c0: 47 4e 45 44 20 29 20 63 6f 6c 30 20 46 52 4f 4d  GNED ) col0 FROM
f6d0: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52   tab1 AS cor0 GR
f6e0: 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30  OUP BY cor0.col0
f6f0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37 0d 0a 2d 32 37  ..----..-27..-27
f700: 0d 0a 2d 32 37 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-27....skipif 
f710: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
f720: 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
f730: 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
f740: 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
f750: 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
f760: 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
f770: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
f780: 20 6c 61 62 65 6c 2d 34 39 39 0d 0a 53 45 4c 45   label-499..SELE
f790: 43 54 20 43 41 53 54 20 28 20 2d 20 32 37 20 41  CT CAST ( - 27 A
f7a0: 53 20 49 4e 54 45 47 45 52 20 29 20 63 6f 6c 30  S INTEGER ) col0
f7b0: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
f7c0: 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
f7d0: 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37  .col0..----..-27
f7e0: 0d 0a 2d 32 37 0d 0a 2d 32 37 0d 0a 0d 0a 71 75  ..-27..-27....qu
f7f0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
f800: 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 72 30  ELECT ALL + cor0
f810: 2e 63 6f 6c 31 20 2a 20 32 38 20 2b 20 63 6f 72  .col1 * 28 + cor
f820: 30 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  0.col1 FROM tab0
f830: 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
f840: 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y cor0.col1..---
f850: 2d 0d 0a 30 0d 0a 32 33 34 39 0d 0a 0d 0a 71 75  -..0..2349....qu
f860: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
f870: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
f880: 20 2d 20 74 61 62 31 2e 63 6f 6c 30 20 2a 20 2b   - tab1.col0 * +
f890: 20 33 35 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   35 AS col2 FROM
f8a0: 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74   tab1 GROUP BY t
f8b0: 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab1.col0..----..
f8c0: 32 38 37 30 0d 0a 37 37 30 0d 0a 39 38 30 0d 0a  2870..770..980..
f8d0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
f8e0: 74 0d 0a 53 45 4c 45 43 54 20 39 33 20 46 52 4f  t..SELECT 93 FRO
f8f0: 4d 20 74 61 62 31 20 63 6f 72 30 20 47 52 4f 55  M tab1 cor0 GROU
f900: 50 20 42 59 20 63 6f 6c 32 2c 20 63 6f 72 30 2e  P BY col2, cor0.
f910: 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 39 33 0d 0a  col0..----..93..
f920: 39 33 0d 0a 39 33 0d 0a 0d 0a 71 75 65 72 79 20  93..93....query 
f930: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
f940: 54 20 2b 20 63 6f 72 30 2e 63 6f 6c 30 20 2a 20  T + cor0.col0 * 
f950: 2b 20 28 20 63 6f 72 30 2e 63 6f 6c 30 20 29 20  + ( cor0.col0 ) 
f960: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
f970: 31 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  1 cor0 GROUP BY 
f980: 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor0.col0..----.
f990: 0a 34 38 34 0d 0a 36 37 32 34 0d 0a 37 38 34 0d  .484..6724..784.
f9a0: 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
f9b0: 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
f9c0: 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
f9d0: 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
f9e0: 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
f9f0: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
fa00: 45 43 54 20 41 4c 4c 20 2d 20 63 6f 72 30 2e 63  ECT ALL - cor0.c
fa10: 6f 6c 30 20 2b 20 2d 20 63 6f 72 30 2e 63 6f 6c  ol0 + - cor0.col
fa20: 30 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  0 col1 FROM tab2
fa30: 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
fa40: 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y cor0.col0..---
fa50: 2d 0d 0a 2d 31 38 32 0d 0a 2d 31 38 34 0d 0a 2d  -..-182..-184..-
fa60: 33 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  30....query I ro
fa70: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 31 31  wsort..SELECT 11
fa80: 20 2b 20 2d 20 63 6f 72 30 2e 63 6f 6c 32 20 41   + - cor0.col2 A
fa90: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
faa0: 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
fab0: 59 20 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 6c  Y cor0.col2, col
fac0: 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 34 0d 0a 2d 36  2..----..-34..-6
fad0: 30 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  0..3....query I 
fae0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
faf0: 2d 20 2b 20 39 37 20 46 52 4f 4d 20 74 61 62 30  - + 97 FROM tab0
fb00: 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
fb10: 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 37 0d 0a  ol0..----..-97..
fb20: 2d 39 37 0d 0a 2d 39 37 0d 0a 0d 0a 71 75 65 72  -97..-97....quer
fb30: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
fb40: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63  ECT DISTINCT + c
fb50: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
fb60: 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
fb70: 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 39  ol0..----..15..9
fb80: 31 0d 0a 39 32 0d 0a 0d 0a 71 75 65 72 79 20 49  1..92....query I
fb90: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
fba0: 20 41 4c 4c 20 39 37 20 41 53 20 63 6f 6c 31 20   ALL 97 AS col1 
fbb0: 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
fbc0: 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d  BY tab0.col2..--
fbd0: 2d 2d 0d 0a 39 37 0d 0a 39 37 0d 0a 39 37 0d 0a  --..97..97..97..
fbe0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
fbf0: 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 36 39  t..SELECT + - 69
fc00: 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50   FROM tab1 GROUP
fc10: 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d   BY tab1.col1..-
fc20: 2d 2d 2d 0d 0a 2d 36 39 0d 0a 2d 36 39 0d 0a 2d  ---..-69..-69..-
fc30: 36 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  69....query I ro
fc40: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
fc50: 74 61 62 30 2e 63 6f 6c 31 20 2a 20 74 61 62 30  tab0.col1 * tab0
fc60: 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52  .col1 AS col2 FR
fc70: 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59  OM tab0 GROUP BY
fc80: 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   tab0.col1..----
fc90: 0d 0a 2d 36 35 36 31 0d 0a 30 0d 0a 0d 0a 71 75  ..-6561..0....qu
fca0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
fcb0: 45 4c 45 43 54 20 2b 20 2d 20 33 20 41 53 20 63  ELECT + - 3 AS c
fcc0: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52  ol0 FROM tab2 GR
fcd0: 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 32  OUP BY tab2.col2
fce0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 2d 33 0d 0a  ..----..-3..-3..
fcf0: 2d 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  -3....query I ro
fd00: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
fd10: 2b 20 37 35 20 46 52 4f 4d 20 74 61 62 31 20 47  + 75 FROM tab1 G
fd20: 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
fd30: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 35 0d 0a 2d 37  0..----..-75..-7
fd40: 35 0d 0a 2d 37 35 0d 0a 0d 0a 71 75 65 72 79 20  5..-75....query 
fd50: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
fd60: 54 20 44 49 53 54 49 4e 43 54 20 38 33 20 46 52  T DISTINCT 83 FR
fd70: 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 47 52 4f  OM tab2 cor0 GRO
fd80: 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c  UP BY cor0.col0,
fd90: 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   cor0.col2..----
fda0: 0d 0a 38 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..83....query I 
fdb0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
fdc0: 32 38 20 2a 20 2b 20 74 61 62 30 2e 63 6f 6c 32  28 * + tab0.col2
fdd0: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
fde0: 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30  b0 GROUP BY tab0
fdf0: 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 30 36  .col2..----..106
fe00: 34 0d 0a 32 32 31 32 0d 0a 36 37 32 0d 0a 0d 0a  4..2212..672....
fe10: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
fe20: 0a 53 45 4c 45 43 54 20 2b 20 2b 20 74 61 62 32  .SELECT + + tab2
fe30: 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52  .col0 AS col2 FR
fe40: 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
fe50: 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   tab2.col0..----
fe60: 0d 0a 31 35 0d 0a 39 31 0d 0a 39 32 0d 0a 0d 0a  ..15..91..92....
fe70: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
fe80: 0a 53 45 4c 45 43 54 20 2d 20 28 20 2d 20 31 35  .SELECT - ( - 15
fe90: 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
fea0: 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
feb0: 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31  r0.col1..----..1
fec0: 35 0d 0a 31 35 0d 0a 31 35 0d 0a 0d 0a 71 75 65  5..15..15....que
fed0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
fee0: 4c 45 43 54 20 34 31 20 2b 20 63 6f 72 30 2e 63  LECT 41 + cor0.c
fef0: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol1 FROM tab2 AS
ff00: 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
ff10: 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  or0.col1..----..
ff20: 31 30 30 0d 0a 31 30 32 0d 0a 38 32 0d 0a 0d 0a  100..102..82....
ff30: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
ff40: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30  .SELECT ALL col0
ff50: 20 2a 20 2b 20 63 6f 72 30 2e 63 6f 6c 30 20 46   * + cor0.col0 F
ff60: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
ff70: 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
ff80: 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 34 39 0d  ol0..----..1849.
ff90: 0a 36 37 36 0d 0a 36 38 38 39 0d 0a 0d 0a 71 75  .676..6889....qu
ffa0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
ffb0: 45 4c 45 43 54 20 2d 20 63 6f 6c 32 20 2a 20 2d  ELECT - col2 * -
ffc0: 20 74 61 62 32 2e 63 6f 6c 32 20 46 52 4f 4d 20   tab2.col2 FROM 
ffd0: 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61  tab2 GROUP BY ta
ffe0: 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33  b2.col2..----..3
fff0: 33 36 34 0d 0a 36 32 34 31 0d 0a 37 35 36 39 0d  364..6241..7569.
10000 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
10010 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
10020 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
10030 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
10040 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
10050 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
10060 45 43 54 20 2d 20 2b 20 63 6f 6c 31 20 63 6f 6c  ECT - + col1 col
10070 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  0 FROM tab1 GROU
10080 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a  P BY tab1.col1..
10090 2d 2d 2d 2d 0d 0a 2d 34 34 0d 0a 2d 35 37 0d 0a  ----..-44..-57..
100a0 2d 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  -6....query I ro
100b0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
100c0 72 31 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20  r1.col1 AS col0 
100d0 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 43  FROM tab2 cor0 C
100e0 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 41  ROSS JOIN tab2 A
100f0 53 20 63 6f 72 31 20 47 52 4f 55 50 20 42 59 20  S cor1 GROUP BY 
10100 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 72 31 2e  cor0.col2, cor1.
10110 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  col1..----..9 va
10120 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
10130 61 64 32 65 35 66 61 36 64 30 39 34 32 39 32 62  ad2e5fa6d094292b
10140 64 61 32 31 62 66 34 36 63 37 38 31 37 31 62 38  da21bf46c78171b8
10150 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
10160 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
10170 49 4e 43 54 20 2b 20 2b 20 38 38 20 46 52 4f 4d  INCT + + 88 FROM
10180 20 74 61 62 31 2c 20 74 61 62 31 20 41 53 20 63   tab1, tab1 AS c
10190 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
101a0 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 38 38  0.col2..----..88
101b0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
101c0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
101d0 49 4e 43 54 20 39 36 20 41 53 20 63 6f 6c 32 20  INCT 96 AS col2 
101e0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
101f0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
10200 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 39 36 0d 0a  col0..----..96..
10210 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
10220 74 0d 0a 53 45 4c 45 43 54 20 2d 20 35 33 20 46  t..SELECT - 53 F
10230 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42  ROM tab0 GROUP B
10240 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y tab0.col0..---
10250 2d 0d 0a 2d 35 33 0d 0a 2d 35 33 0d 0a 2d 35 33  -..-53..-53..-53
10260 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
10270 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
10280 49 4e 43 54 20 38 36 20 46 52 4f 4d 20 74 61 62  INCT 86 FROM tab
10290 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
102a0 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 38 36 0d 0a  col2..----..86..
102b0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
102c0 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
102d0 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
102e0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
102f0 65 6c 2d 35 32 36 0d 0a 53 45 4c 45 43 54 20 2b  el-526..SELECT +
10300 20 43 41 53 54 28 20 63 6f 6c 32 20 41 53 20 53   CAST( col2 AS S
10310 49 47 4e 45 44 20 29 20 2a 20 2b 20 63 6f 6c 32  IGNED ) * + col2
10320 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
10330 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32  b2 GROUP BY tab2
10340 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33 33 36  .col2..----..336
10350 34 0d 0a 36 32 34 31 0d 0a 37 35 36 39 0d 0a 0d  4..6241..7569...
10360 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
10370 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
10380 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
10390 6c 61 62 65 6c 2d 35 32 36 0d 0a 53 45 4c 45 43  label-526..SELEC
103a0 54 20 2b 20 43 41 53 54 20 28 20 63 6f 6c 32 20  T + CAST ( col2 
103b0 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20 2b  AS INTEGER ) * +
103c0 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52   col2 AS col1 FR
103d0 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
103e0 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   tab2.col2..----
103f0 0d 0a 33 33 36 34 0d 0a 36 32 34 31 0d 0a 37 35  ..3364..6241..75
10400 36 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  69....query I ro
10410 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 4e 55  wsort..SELECT NU
10420 4c 4c 49 46 20 28 20 74 61 62 30 2e 63 6f 6c 32  LLIF ( tab0.col2
10430 2c 20 74 61 62 30 2e 63 6f 6c 32 20 2a 20 2d 20  , tab0.col2 * - 
10440 74 61 62 30 2e 63 6f 6c 32 20 2d 20 38 34 20 29  tab0.col2 - 84 )
10450 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
10460 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30  b0 GROUP BY tab0
10470 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32 34 0d  .col2..----..24.
10480 0a 33 38 0d 0a 37 39 0d 0a 0d 0a 71 75 65 72 79  .38..79....query
10490 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
104a0 43 54 20 2b 20 28 20 35 34 20 29 20 46 52 4f 4d  CT + ( 54 ) FROM
104b0 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52   tab1 AS cor0 GR
104c0 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31  OUP BY cor0.col1
104d0 0d 0a 2d 2d 2d 2d 0d 0a 35 34 0d 0a 35 34 0d 0a  ..----..54..54..
104e0 35 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  54....query I ro
104f0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
10500 2b 20 28 20 2b 20 39 33 20 29 20 41 53 20 63 6f  + ( + 93 ) AS co
10510 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f  l1 FROM tab0 GRO
10520 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d  UP BY tab0.col0.
10530 0a 2d 2d 2d 2d 0d 0a 2d 39 33 0d 0a 2d 39 33 0d  .----..-93..-93.
10540 0a 2d 39 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-93....query I 
10550 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
10560 2d 20 2d 20 74 61 62 32 2e 63 6f 6c 30 20 2a 20  - - tab2.col0 * 
10570 74 61 62 32 2e 63 6f 6c 30 20 46 52 4f 4d 20 74  tab2.col0 FROM t
10580 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab2 GROUP BY tab
10590 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32  2.col0..----..22
105a0 35 0d 0a 38 32 38 31 0d 0a 38 34 36 34 0d 0a 0d  5..8281..8464...
105b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
105c0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
105d0 54 20 2d 20 31 20 46 52 4f 4d 20 74 61 62 31 20  T - 1 FROM tab1 
105e0 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
105f0 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 0d 0a  l2..----..-1....
10600 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
10610 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
10620 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
10630 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
10640 2d 35 33 32 0d 0a 53 45 4c 45 43 54 20 44 49 53  -532..SELECT DIS
10650 54 49 4e 43 54 20 2d 20 38 34 20 44 49 56 20 63  TINCT - 84 DIV c
10660 6f 72 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 32  or0.col2 AS col2
10670 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
10680 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
10690 2e 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 30  .col2, cor0.col0
106a0 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 30 0d 0a 0d  ..----..-1..0...
106b0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
106c0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
106d0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
106e0 6c 61 62 65 6c 2d 35 33 32 0d 0a 53 45 4c 45 43  label-532..SELEC
106f0 54 20 44 49 53 54 49 4e 43 54 20 2d 20 38 34 20  T DISTINCT - 84 
10700 2f 20 63 6f 72 30 2e 63 6f 6c 32 20 41 53 20 63  / cor0.col2 AS c
10710 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol2 FROM tab2 AS
10720 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
10730 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 72 30 2e 63  or0.col2, cor0.c
10740 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 30  ol0..----..-1..0
10750 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
10760 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 38 33  ort..SELECT + 83
10770 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
10780 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
10790 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 38 33 0d  .col0..----..83.
107a0 0a 38 33 0d 0a 38 33 0d 0a 0d 0a 71 75 65 72 79  .83..83....query
107b0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
107c0 43 54 20 32 31 20 2b 20 63 6f 72 30 2e 63 6f 6c  CT 21 + cor0.col
107d0 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  0 AS col1 FROM t
107e0 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab0 AS cor0 GROU
107f0 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  P BY cor0.col0..
10800 2d 2d 2d 2d 0d 0a 31 30 34 0d 0a 34 37 0d 0a 36  ----..104..47..6
10810 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  4....skipif post
10820 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
10830 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
10840 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
10850 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
10860 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
10870 45 4c 45 43 54 20 41 4c 4c 20 2d 20 31 36 20 63  ELECT ALL - 16 c
10880 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
10890 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
108a0 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  or0.col0..----..
108b0 2d 31 36 0d 0a 2d 31 36 0d 0a 2d 31 36 0d 0a 0d  -16..-16..-16...
108c0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
108d0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d  ..SELECT ALL + -
108e0 20 74 61 62 32 2e 63 6f 6c 31 20 2a 20 2d 20 31   tab2.col1 * - 1
108f0 36 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  6 FROM tab2 GROU
10900 50 20 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  P BY col1..----.
10910 0a 36 35 36 0d 0a 39 34 34 0d 0a 39 37 36 0d 0a  .656..944..976..
10920 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
10930 74 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e 63  t..SELECT cor0.c
10940 6f 6c 30 20 2a 20 2d 20 63 6f 72 30 2e 63 6f 6c  ol0 * - cor0.col
10950 30 20 2b 20 2b 20 37 35 20 46 52 4f 4d 20 74 61  0 + + 75 FROM ta
10960 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b1 AS cor0 GROUP
10970 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d   BY cor0.col0..-
10980 2d 2d 2d 0d 0a 2d 34 30 39 0d 0a 2d 36 36 34 39  ---..-409..-6649
10990 0d 0a 2d 37 30 39 0d 0a 0d 0a 71 75 65 72 79 20  ..-709....query 
109a0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
109b0 54 20 41 4c 4c 20 2b 20 37 35 20 41 53 20 63 6f  T ALL + 75 AS co
109c0 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f  l1 FROM tab0 GRO
109d0 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d  UP BY tab0.col0.
109e0 0a 2d 2d 2d 2d 0d 0a 37 35 0d 0a 37 35 0d 0a 37  .----..75..75..7
109f0 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  5....skipif post
10a00 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
10a10 53 51 4c 20 68 61 73 20 73 74 72 69 63 74 20 63  SQL has strict c
10a20 6f 6c 75 6d 6e 20 75 73 61 67 65 20 66 6f 72 20  olumn usage for 
10a30 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73 65 73  GROUP BY clauses
10a40 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
10a50 74 0d 0a 53 45 4c 45 43 54 20 2b 20 32 30 20 2a  t..SELECT + 20 *
10a60 20 43 4f 41 4c 45 53 43 45 20 28 20 39 35 2c 20   COALESCE ( 95, 
10a70 2d 20 74 61 62 31 2e 63 6f 6c 32 2c 20 2d 20 74  - tab1.col2, - t
10a80 61 62 31 2e 63 6f 6c 31 20 29 20 46 52 4f 4d 20  ab1.col1 ) FROM 
10a90 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
10aa0 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31  b1.col0..----..1
10ab0 39 30 30 0d 0a 31 39 30 30 0d 0a 31 39 30 30 0d  900..1900..1900.
10ac0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
10ad0 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
10ae0 20 36 35 20 46 52 4f 4d 20 74 61 62 30 20 41 53   65 FROM tab0 AS
10af0 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
10b00 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  or0.col2..----..
10b10 2d 36 35 0d 0a 2d 36 35 0d 0a 2d 36 35 0d 0a 0d  -65..-65..-65...
10b20 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
10b30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 36  ..SELECT ALL + 6
10b40 37 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  7 AS col0 FROM t
10b50 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab1 AS cor0 GROU
10b60 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a  P BY cor0.col2..
10b70 2d 2d 2d 2d 0d 0a 36 37 0d 0a 36 37 0d 0a 36 37  ----..67..67..67
10b80 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
10b90 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
10ba0 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
10bb0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
10bc0 61 62 65 6c 2d 35 34 32 0d 0a 53 45 4c 45 43 54  abel-542..SELECT
10bd0 20 63 6f 72 30 2e 63 6f 6c 32 20 44 49 56 20 2b   cor0.col2 DIV +
10be0 20 31 39 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   19 AS col1 FROM
10bf0 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52   tab1 AS cor0 GR
10c00 4f 55 50 20 42 59 20 63 6f 6c 32 2c 20 63 6f 72  OUP BY col2, cor
10c10 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  0.col1..----..0.
10c20 0a 32 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  .2..3....skipif 
10c30 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
10c40 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
10c50 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 34  rowsort label-54
10c60 32 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e 63  2..SELECT cor0.c
10c70 6f 6c 32 20 2f 20 2b 20 31 39 20 41 53 20 63 6f  ol2 / + 19 AS co
10c80 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l1 FROM tab1 AS 
10c90 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
10ca0 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d  l2, cor0.col1..-
10cb0 2d 2d 2d 0d 0a 30 0d 0a 32 0d 0a 33 0d 0a 0d 0a  ---..0..2..3....
10cc0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
10cd0 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c  .SELECT cor0.col
10ce0 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  0 AS col1 FROM t
10cf0 61 62 30 20 41 53 20 63 6f 72 30 20 43 52 4f 53  ab0 AS cor0 CROS
10d00 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53 20 63  S JOIN tab1 AS c
10d10 6f 72 31 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or1 GROUP BY cor
10d20 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 36  0.col0..----..26
10d30 0d 0a 34 33 0d 0a 38 33 0d 0a 0d 0a 71 75 65 72  ..43..83....quer
10d40 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
10d50 45 43 54 20 2b 20 34 20 46 52 4f 4d 20 74 61 62  ECT + 4 FROM tab
10d60 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  0 AS cor0 GROUP 
10d70 42 59 20 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f  BY col2, cor0.co
10d80 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 34 0d 0a 34 0d 0a  l0..----..4..4..
10d90 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  4....query I row
10da0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63  sort..SELECT - c
10db0 6f 72 30 2e 63 6f 6c 31 20 2a 20 63 6f 72 30 2e  or0.col1 * cor0.
10dc0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 63  col1 FROM tab1 c
10dd0 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
10de0 30 2e 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c  0.col2, cor0.col
10df0 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 33 36 0d 0a  1..----..-1936..
10e00 2d 33 32 34 39 0d 0a 2d 33 36 0d 0a 0d 0a 73 6b  -3249..-36....sk
10e10 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
10e20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
10e30 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
10e40 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
10e50 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
10e60 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
10e70 4c 4c 20 2b 20 74 61 62 30 2e 63 6f 6c 30 20 63  LL + tab0.col0 c
10e80 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol1 FROM tab0 GR
10e90 4f 55 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d  OUP BY col0..---
10ea0 2d 0d 0a 32 36 0d 0a 34 33 0d 0a 38 33 0d 0a 0d  -..26..43..83...
10eb0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
10ec0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
10ed0 54 20 39 39 20 2a 20 63 6f 72 30 2e 63 6f 6c 30  T 99 * cor0.col0
10ee0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
10ef0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
10f00 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 35 37  .col0..----..257
10f10 34 0d 0a 34 32 35 37 0d 0a 38 32 31 37 0d 0a 0d  4..4257..8217...
10f20 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
10f30 0d 0a 53 45 4c 45 43 54 20 2b 20 37 38 20 41 53  ..SELECT + 78 AS
10f40 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
10f50 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
10f60 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   cor0.col0..----
10f70 0d 0a 37 38 0d 0a 37 38 0d 0a 37 38 0d 0a 0d 0a  ..78..78..78....
10f80 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
10f90 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
10fa0 20 2d 20 2b 20 31 39 20 46 52 4f 4d 20 74 61 62   - + 19 FROM tab
10fb0 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
10fc0 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 0d  col2..----..-19.
10fd0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
10fe0 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 72  rt..SELECT + cor
10ff0 30 2e 63 6f 6c 31 20 2d 20 63 6f 72 30 2e 63 6f  0.col1 - cor0.co
11000 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l1 FROM tab1 AS 
11010 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
11020 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30  r0.col1..----..0
11030 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  ..0..0....query 
11040 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
11050 54 20 44 49 53 54 49 4e 43 54 20 2b 20 31 32 20  T DISTINCT + 12 
11060 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
11070 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 30 0d  0 GROUP BY col0.
11080 0a 2d 2d 2d 2d 0d 0a 31 32 0d 0a 0d 0a 71 75 65  .----..12....que
11090 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
110a0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 37 36  LECT DISTINCT 76
110b0 20 2b 20 28 20 2d 20 33 33 20 29 20 46 52 4f 4d   + ( - 33 ) FROM
110c0 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52   tab0 AS cor0 GR
110d0 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d  OUP BY col1..---
110e0 2d 0d 0a 34 33 0d 0a 0d 0a 71 75 65 72 79 20 49  -..43....query I
110f0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
11100 20 44 49 53 54 49 4e 43 54 20 33 35 20 41 53 20   DISTINCT 35 AS 
11110 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47  col2 FROM tab0 G
11120 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c  ROUP BY tab0.col
11130 30 0d 0a 2d 2d 2d 2d 0d 0a 33 35 0d 0a 0d 0a 6f  0..----..35....o
11140 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
11150 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
11160 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
11170 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
11180 35 35 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  554..SELECT ALL 
11190 63 6f 72 30 2e 63 6f 6c 30 20 44 49 56 20 2d 20  cor0.col0 DIV - 
111a0 63 6f 72 30 2e 63 6f 6c 30 20 2b 20 37 36 20 2a  cor0.col0 + 76 *
111b0 20 63 6f 72 30 2e 63 6f 6c 30 20 46 52 4f 4d 20   cor0.col0 FROM 
111c0 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f  tab1 AS cor0 GRO
111d0 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d  UP BY cor0.col0.
111e0 0a 2d 2d 2d 2d 0d 0a 31 36 37 31 0d 0a 32 31 32  .----..1671..212
111f0 37 0d 0a 36 32 33 31 0d 0a 0d 0a 73 6b 69 70 69  7..6231....skipi
11200 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
11210 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
11220 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
11230 35 35 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  554..SELECT ALL 
11240 63 6f 72 30 2e 63 6f 6c 30 20 2f 20 2d 20 63 6f  cor0.col0 / - co
11250 72 30 2e 63 6f 6c 30 20 2b 20 37 36 20 2a 20 63  r0.col0 + 76 * c
11260 6f 72 30 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61  or0.col0 FROM ta
11270 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b1 AS cor0 GROUP
11280 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d   BY cor0.col0..-
11290 2d 2d 2d 0d 0a 31 36 37 31 0d 0a 32 31 32 37 0d  ---..1671..2127.
112a0 0a 36 32 33 31 0d 0a 0d 0a 71 75 65 72 79 20 49  .6231....query I
112b0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
112c0 20 2d 20 38 39 20 41 53 20 63 6f 6c 32 20 46 52   - 89 AS col2 FR
112d0 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
112e0 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 39   col1..----..-89
112f0 0d 0a 2d 38 39 0d 0a 2d 38 39 0d 0a 0d 0a 71 75  ..-89..-89....qu
11300 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
11310 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 38  ELECT DISTINCT 8
11320 33 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  3 FROM tab2 AS c
11330 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
11340 61 62 30 20 41 53 20 63 6f 72 31 20 47 52 4f 55  ab0 AS cor1 GROU
11350 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a  P BY cor0.col1..
11360 2d 2d 2d 2d 0d 0a 38 33 0d 0a 0d 0a 71 75 65 72  ----..83....quer
11370 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
11380 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 34  ECT DISTINCT - 4
11390 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  0 FROM tab1 GROU
113a0 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  P BY col0..----.
113b0 0a 2d 34 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-40....query I 
113c0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
113d0 44 49 53 54 49 4e 43 54 20 28 20 63 6f 72 30 2e  DISTINCT ( cor0.
113e0 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 32 20 46  col0 ) AS col2 F
113f0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
11400 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
11410 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32  ol0..----..22..2
11420 38 0d 0a 38 32 0d 0a 0d 0a 73 6b 69 70 69 66 20  8..82....skipif 
11430 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
11440 74 67 72 65 53 51 4c 20 68 61 73 20 73 74 72 69  tgreSQL has stri
11450 63 74 20 63 6f 6c 75 6d 6e 20 75 73 61 67 65 20  ct column usage 
11460 66 6f 72 20 47 52 4f 55 50 20 42 59 20 63 6c 61  for GROUP BY cla
11470 75 73 65 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  uses..query I ro
11480 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
11490 4c 20 43 4f 41 4c 45 53 43 45 20 28 20 31 30 2c  L COALESCE ( 10,
114a0 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 2d 20 63 6f   cor0.col1, - co
114b0 72 30 2e 63 6f 6c 32 20 2b 20 2b 20 33 31 20 29  r0.col2 + + 31 )
114c0 20 2a 20 32 35 20 2b 20 63 6f 72 30 2e 63 6f 6c   * 25 + cor0.col
114d0 32 20 2a 20 2b 20 28 20 37 35 20 29 20 41 53 20  2 * + ( 75 ) AS 
114e0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41  col2 FROM tab1 A
114f0 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
11500 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e  cor0.col0, cor0.
11510 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33 36 32 35  col2..----..3625
11520 0d 0a 35 35 37 35 0d 0a 38 35 30 0d 0a 0d 0a 71  ..5575..850....q
11530 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
11540 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
11550 35 36 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f  56 FROM tab1 GRO
11560 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d  UP BY tab1.col2.
11570 0a 2d 2d 2d 2d 0d 0a 35 36 0d 0a 0d 0a 73 6b 69  .----..56....ski
11580 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
11590 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
115a0 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
115b0 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
115c0 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
115d0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
115e0 53 54 49 4e 43 54 20 2d 20 2d 20 74 61 62 30 2e  STINCT - - tab0.
115f0 63 6f 6c 32 20 63 6f 6c 31 20 46 52 4f 4d 20 74  col2 col1 FROM t
11600 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab0 GROUP BY tab
11610 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32 34  0.col2..----..24
11620 0d 0a 33 38 0d 0a 37 39 0d 0a 0d 0a 6f 6e 6c 79  ..38..79....only
11630 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
11640 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
11650 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
11660 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 36 32  owsort label-562
11670 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 72  ..SELECT ALL cor
11680 30 2e 63 6f 6c 32 20 44 49 56 20 63 6f 72 30 2e  0.col2 DIV cor0.
11690 63 6f 6c 30 20 2b 20 2d 20 33 39 20 46 52 4f 4d  col0 + - 39 FROM
116a0 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52   tab1 AS cor0 GR
116b0 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32  OUP BY cor0.col2
116c0 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  , cor0.col0..---
116d0 2d 0d 0a 2d 33 38 0d 0a 2d 33 39 0d 0a 2d 33 39  -..-38..-39..-39
116e0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
116f0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
11700 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
11710 72 74 20 6c 61 62 65 6c 2d 35 36 32 0d 0a 53 45  rt label-562..SE
11720 4c 45 43 54 20 41 4c 4c 20 63 6f 72 30 2e 63 6f  LECT ALL cor0.co
11730 6c 32 20 2f 20 63 6f 72 30 2e 63 6f 6c 30 20 2b  l2 / cor0.col0 +
11740 20 2d 20 33 39 20 46 52 4f 4d 20 74 61 62 31 20   - 39 FROM tab1 
11750 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
11760 20 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 72 30   cor0.col2, cor0
11770 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 38  .col0..----..-38
11780 0d 0a 2d 33 39 0d 0a 2d 33 39 0d 0a 0d 0a 71 75  ..-39..-39....qu
11790 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
117a0 45 4c 45 43 54 20 2d 20 39 35 20 41 53 20 63 6f  ELECT - 95 AS co
117b0 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72  l2 FROM tab1 cor
117c0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
117d0 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d  col2, cor0.col2.
117e0 0a 2d 2d 2d 2d 0d 0a 2d 39 35 0d 0a 2d 39 35 0d  .----..-95..-95.
117f0 0a 2d 39 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-95....query I 
11800 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
11810 44 49 53 54 49 4e 43 54 20 35 37 20 46 52 4f 4d  DISTINCT 57 FROM
11820 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
11830 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0.col0..----..
11840 35 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  57....query I ro
11850 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
11860 4c 20 2b 20 2b 20 36 20 46 52 4f 4d 20 74 61 62  L + + 6 FROM tab
11870 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
11880 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a 36  col0..----..6..6
11890 0d 0a 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  ..6....skipif po
118a0 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
118b0 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
118c0 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
118d0 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
118e0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
118f0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2b 20  .SELECT ALL + + 
11900 74 61 62 31 2e 63 6f 6c 30 20 63 6f 6c 32 20 46  tab1.col0 col2 F
11910 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
11920 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y tab1.col0..---
11930 2d 0d 0a 32 32 0d 0a 32 38 0d 0a 38 32 0d 0a 0d  -..22..28..82...
11940 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
11950 0d 0a 53 45 4c 45 43 54 20 2b 20 32 20 2b 20 2d  ..SELECT + 2 + -
11960 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
11970 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
11980 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 0d 0a 2d  l0..----..-20..-
11990 32 36 0d 0a 2d 38 30 0d 0a 0d 0a 71 75 65 72 79  26..-80....query
119a0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
119b0 43 54 20 2d 20 34 30 20 2b 20 2d 20 35 33 20 46  CT - 40 + - 53 F
119c0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
119d0 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
119e0 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 33 0d 0a  ol0..----..-93..
119f0 2d 39 33 0d 0a 2d 39 33 0d 0a 0d 0a 6f 6e 6c 79  -93..-93....only
11a00 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
11a10 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
11a20 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
11a30 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 36 39  owsort label-569
11a40 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 72  ..SELECT ALL cor
11a50 30 2e 63 6f 6c 30 20 44 49 56 20 2d 20 36 30 20  0.col0 DIV - 60 
11a60 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
11a70 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
11a80 63 6f 6c 30 2c 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d  col0, col2..----
11a90 0d 0a 2d 31 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b  ..-1..0..0....sk
11aa0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
11ab0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
11ac0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
11ad0 65 6c 2d 35 36 39 0d 0a 53 45 4c 45 43 54 20 41  el-569..SELECT A
11ae0 4c 4c 20 63 6f 72 30 2e 63 6f 6c 30 20 2f 20 2d  LL cor0.col0 / -
11af0 20 36 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53   60 FROM tab0 AS
11b00 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
11b10 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 6c 32 0d 0a  or0.col0, col2..
11b20 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 30 0d 0a 30 0d 0a  ----..-1..0..0..
11b30 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
11b40 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
11b50 63 6f 72 30 2e 63 6f 6c 30 20 46 52 4f 4d 20 74  cor0.col0 FROM t
11b60 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab1 AS cor0 GROU
11b70 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20  P BY cor0.col1, 
11b80 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e  cor0.col0, cor0.
11b90 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 0d  col0..----..-22.
11ba0 0a 2d 32 38 0d 0a 2d 38 32 0d 0a 0d 0a 71 75 65  .-28..-82....que
11bb0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
11bc0 4c 45 43 54 20 2d 20 63 6f 72 30 2e 63 6f 6c 30  LECT - cor0.col0
11bd0 20 2a 20 63 6f 72 30 2e 63 6f 6c 30 20 41 53 20   * cor0.col0 AS 
11be0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
11bf0 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
11c00 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor0.col0..----.
11c10 0a 2d 32 32 35 0d 0a 2d 38 32 38 31 0d 0a 2d 38  .-225..-8281..-8
11c20 34 36 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  464....query I r
11c30 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
11c40 20 2d 20 74 61 62 31 2e 63 6f 6c 32 20 46 52 4f   - tab1.col2 FRO
11c50 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
11c60 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  tab1.col2..----.
11c70 0a 2d 34 35 0d 0a 2d 37 31 0d 0a 2d 38 0d 0a 0d  .-45..-71..-8...
11c80 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
11c90 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 74  ..SELECT ALL - t
11ca0 61 62 31 2e 63 6f 6c 31 20 2b 20 2d 20 74 61 62  ab1.col1 + - tab
11cb0 31 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46  1.col1 AS col2 F
11cc0 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
11cd0 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y tab1.col1..---
11ce0 2d 0d 0a 2d 31 31 34 0d 0a 2d 31 32 0d 0a 2d 38  -..-114..-12..-8
11cf0 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  8....query I row
11d00 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b  sort..SELECT + +
11d10 20 35 39 20 46 52 4f 4d 20 74 61 62 30 20 47 52   59 FROM tab0 GR
11d20 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d  OUP BY col2..---
11d30 2d 0d 0a 35 39 0d 0a 35 39 0d 0a 35 39 0d 0a 0d  -..59..59..59...
11d40 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
11d50 0d 0a 53 45 4c 45 43 54 20 74 61 62 31 2e 63 6f  ..SELECT tab1.co
11d60 6c 31 20 2b 20 2d 20 74 61 62 31 2e 63 6f 6c 31  l1 + - tab1.col1
11d70 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
11d80 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31  b1 GROUP BY tab1
11d90 2e 63 6f 6c 31 20 48 41 56 49 4e 47 20 4e 4f 54  .col1 HAVING NOT
11da0 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d   NULL IS NULL..-
11db0 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ---....query I r
11dc0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
11dd0 49 53 54 49 4e 43 54 20 2d 20 2d 20 63 6f 6c 30  ISTINCT - - col0
11de0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
11df0 62 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 30  b0 GROUP BY col0
11e00 0d 0a 2d 2d 2d 2d 0d 0a 32 36 0d 0a 34 33 0d 0a  ..----..26..43..
11e10 38 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  83....query I ro
11e20 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
11e30 63 6f 72 30 2e 63 6f 6c 31 20 2d 20 2b 20 63 6f  cor0.col1 - + co
11e40 72 30 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  r0.col0 FROM tab
11e50 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  0 AS cor0 GROUP 
11e60 42 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f  BY cor0.col1, co
11e70 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  r0.col0..----..-
11e80 31 32 34 0d 0a 2d 32 36 0d 0a 2d 38 33 0d 0a 0d  124..-26..-83...
11e90 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
11ea0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 39 32 20  ..SELECT ALL 92 
11eb0 2a 20 2d 20 63 6f 72 30 2e 63 6f 6c 30 20 41 53  * - cor0.col0 AS
11ec0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
11ed0 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
11ee0 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f  r0.col1, cor0.co
11ef0 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 38 30 0d  l0..----..-1380.
11f00 0a 2d 38 33 37 32 0d 0a 2d 38 34 36 34 0d 0a 0d  .-8372..-8464...
11f10 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
11f20 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 72 30 2e  ..SELECT - cor0.
11f30 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f  col0 AS col2 FRO
11f40 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47  M tab0 AS cor0 G
11f50 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
11f60 31 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  1, cor0.col0..--
11f70 2d 2d 0d 0a 2d 32 36 0d 0a 2d 34 33 0d 0a 2d 38  --..-26..-43..-8
11f80 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
11f90 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
11fa0 20 63 6f 72 30 2e 63 6f 6c 31 20 2a 20 2d 20 33   cor0.col1 * - 3
11fb0 35 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  5 AS col1 FROM t
11fc0 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab0 AS cor0 GROU
11fd0 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a  P BY cor0.col1..
11fe0 2d 2d 2d 2d 0d 0a 2d 32 38 33 35 0d 0a 30 0d 0a  ----..-2835..0..
11ff0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
12000 74 0d 0a 53 45 4c 45 43 54 20 34 38 20 46 52 4f  t..SELECT 48 FRO
12010 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
12020 52 4f 55 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d  ROUP BY col0..--
12030 2d 2d 0d 0a 34 38 0d 0a 34 38 0d 0a 34 38 0d 0a  --..48..48..48..
12040 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
12050 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
12060 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
12070 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
12080 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
12090 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
120a0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 74 61  CT DISTINCT - ta
120b0 62 32 2e 63 6f 6c 32 20 2a 20 32 34 20 63 6f 6c  b2.col2 * 24 col
120c0 32 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  2 FROM tab2 GROU
120d0 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a  P BY tab2.col2..
120e0 2d 2d 2d 2d 0d 0a 2d 31 33 39 32 0d 0a 2d 31 38  ----..-1392..-18
120f0 39 36 0d 0a 2d 32 30 38 38 0d 0a 0d 0a 71 75 65  96..-2088....que
12100 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
12110 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c 30 20 41  LECT cor0.col0 A
12120 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
12130 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
12140 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 72 30 2e 63  or0.col2, cor0.c
12150 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32  ol0..----..22..2
12160 38 0d 0a 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49  8..82....query I
12170 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
12180 20 2d 20 36 37 20 46 52 4f 4d 20 74 61 62 30 20   - 67 FROM tab0 
12190 47 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d  GROUP BY col2..-
121a0 2d 2d 2d 0d 0a 2d 36 37 0d 0a 2d 36 37 0d 0a 2d  ---..-67..-67..-
121b0 36 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  67....query I ro
121c0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
121d0 4c 20 2d 20 63 6f 72 30 2e 63 6f 6c 32 20 46 52  L - cor0.col2 FR
121e0 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 47 52 4f  OM tab1 cor0 GRO
121f0 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d  UP BY col2..----
12200 0d 0a 2d 34 35 0d 0a 2d 37 31 0d 0a 2d 38 0d 0a  ..-45..-71..-8..
12210 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
12220 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
12230 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
12240 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
12250 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
12260 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
12270 43 54 20 74 61 62 32 2e 63 6f 6c 32 20 63 6f 6c  CT tab2.col2 col
12280 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  0 FROM tab2 GROU
12290 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a  P BY tab2.col2..
122a0 2d 2d 2d 2d 0d 0a 35 38 0d 0a 37 39 0d 0a 38 37  ----..58..79..87
122b0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
122c0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
122d0 49 4e 43 54 20 63 6f 6c 30 20 2a 20 36 35 20 46  INCT col0 * 65 F
122e0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
122f0 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
12300 6f 6c 30 2c 20 63 6f 6c 32 2c 20 63 6f 6c 30 2c  ol0, col2, col0,
12310 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   cor0.col1..----
12320 0d 0a 31 34 33 30 0d 0a 31 38 32 30 0d 0a 35 33  ..1430..1820..53
12330 33 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  30....query I ro
12340 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
12350 63 6f 72 30 2e 63 6f 6c 31 20 2a 20 63 6f 72 30  cor0.col1 * cor0
12360 2e 63 6f 6c 31 20 2d 20 63 6f 72 30 2e 63 6f 6c  .col1 - cor0.col
12370 31 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30  1 FROM tab0 cor0
12380 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
12390 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 36 34  ol1..----..0..64
123a0 38 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  80....query I ro
123b0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
123c0 53 54 49 4e 43 54 20 2b 20 31 39 20 46 52 4f 4d  STINCT + 19 FROM
123d0 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 63   tab1 GROUP BY c
123e0 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 39 0d 0a 0d  ol1..----..19...
123f0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
12400 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 33 35 20  ..SELECT ALL 35 
12410 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
12420 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  2 AS cor0 GROUP 
12430 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  BY cor0.col0..--
12440 2d 2d 0d 0a 33 35 0d 0a 33 35 0d 0a 33 35 0d 0a  --..35..35..35..
12450 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
12460 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 72 30  t..SELECT + cor0
12470 2e 63 6f 6c 32 20 2a 20 2d 20 63 6f 72 30 2e 63  .col2 * - cor0.c
12480 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
12490 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
124a0 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  or0.col2..----..
124b0 2d 32 30 32 35 0d 0a 2d 35 30 34 31 0d 0a 2d 36  -2025..-5041..-6
124c0 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  4....query I row
124d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
124e0 54 49 4e 43 54 20 2b 20 2b 20 63 6f 6c 31 20 41  TINCT + + col1 A
124f0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
12500 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
12510 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d 0a 35  ol1..----..44..5
12520 37 0d 0a 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20  7..6....query I 
12530 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
12540 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 37 39 20  DISTINCT - + 79 
12550 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
12560 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab0.col1..--
12570 2d 2d 0d 0a 2d 37 39 0d 0a 0d 0a 71 75 65 72 79  --..-79....query
12580 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
12590 43 54 20 41 4c 4c 20 2b 20 36 38 20 46 52 4f 4d  CT ALL + 68 FROM
125a0 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74   tab2 GROUP BY t
125b0 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  ab2.col1..----..
125c0 36 38 0d 0a 36 38 0d 0a 36 38 0d 0a 0d 0a 71 75  68..68..68....qu
125d0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
125e0 45 4c 45 43 54 20 2b 20 37 30 20 2b 20 63 6f 72  ELECT + 70 + cor
125f0 30 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  0.col1 FROM tab0
12600 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
12610 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  or0.col1..----..
12620 31 35 31 0d 0a 37 30 0d 0a 0d 0a 71 75 65 72 79  151..70....query
12630 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
12640 43 54 20 44 49 53 54 49 4e 43 54 20 74 61 62 30  CT DISTINCT tab0
12650 2e 63 6f 6c 32 20 2a 20 2b 20 74 61 62 30 2e 63  .col2 * + tab0.c
12660 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol2 FROM tab0 GR
12670 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32  OUP BY tab0.col2
12680 0d 0a 2d 2d 2d 2d 0d 0a 31 34 34 34 0d 0a 35 37  ..----..1444..57
12690 36 0d 0a 36 32 34 31 0d 0a 0d 0a 71 75 65 72 79  6..6241....query
126a0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
126b0 43 54 20 63 6f 6c 31 20 2a 20 63 6f 72 30 2e 63  CT col1 * cor0.c
126c0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol1 FROM tab1 AS
126d0 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
126e0 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63  or0.col0, cor0.c
126f0 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 39 33 36 0d  ol1..----..1936.
12700 0a 33 32 34 39 0d 0a 33 36 0d 0a 0d 0a 71 75 65  .3249..36....que
12710 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
12720 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 74 61  LECT DISTINCT ta
12730 62 31 2e 63 6f 6c 32 20 2a 20 2d 20 74 61 62 31  b1.col2 * - tab1
12740 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20  .col2 FROM tab1 
12750 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
12760 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 32 35 0d  l2..----..-2025.
12770 0a 2d 35 30 34 31 0d 0a 2d 36 34 0d 0a 0d 0a 71  .-5041..-64....q
12780 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
12790 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
127a0 33 38 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f  38 FROM tab1 GRO
127b0 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d  UP BY tab1.col2.
127c0 0a 2d 2d 2d 2d 0d 0a 33 38 0d 0a 0d 0a 71 75 65  .----..38....que
127d0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
127e0 4c 45 43 54 20 2b 20 34 20 41 53 20 63 6f 6c 30  LECT + 4 AS col0
127f0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
12800 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
12810 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 0d 0a  .col1..----..4..
12820 34 0d 0a 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20  4..4....query I 
12830 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
12840 4e 55 4c 4c 49 46 20 28 20 2b 20 39 36 2c 20 63  NULLIF ( + 96, c
12850 6f 6c 31 20 29 20 41 53 20 63 6f 6c 31 20 46 52  ol1 ) AS col1 FR
12860 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
12870 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
12880 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 39 36 0d 0a 39 36  l1..----..96..96
12890 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
128a0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
128b0 49 4e 43 54 20 2b 20 2b 20 39 34 20 46 52 4f 4d  INCT + + 94 FROM
128c0 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74   tab1 GROUP BY t
128d0 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  ab1.col1..----..
128e0 39 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  94....query I ro
128f0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
12900 4c 20 63 6f 72 30 2e 63 6f 6c 30 20 2b 20 2b 20  L cor0.col0 + + 
12910 31 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  11 AS col0 FROM 
12920 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f  tab1 AS cor0 GRO
12930 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d  UP BY cor0.col0.
12940 0a 2d 2d 2d 2d 0d 0a 33 33 0d 0a 33 39 0d 0a 39  .----..33..39..9
12950 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
12960 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 37  sort..SELECT + 7
12970 33 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  3 AS col0 FROM t
12980 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab1 AS cor0 GROU
12990 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a  P BY cor0.col1..
129a0 2d 2d 2d 2d 0d 0a 37 33 0d 0a 37 33 0d 0a 37 33  ----..73..73..73
129b0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
129c0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 35 39  ort..SELECT - 59
129d0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
129e0 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
129f0 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d   BY cor0.col1..-
12a00 2d 2d 2d 0d 0a 2d 35 39 0d 0a 2d 35 39 0d 0a 0d  ---..-59..-59...
12a10 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
12a20 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 37 32 20  ..SELECT - - 72 
12a30 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
12a40 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d  BY tab0.col2..--
12a50 2d 2d 0d 0a 37 32 0d 0a 37 32 0d 0a 37 32 0d 0a  --..72..72..72..
12a60 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
12a70 74 0d 0a 53 45 4c 45 43 54 20 2d 20 37 30 20 41  t..SELECT - 70 A
12a80 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
12a90 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
12aa0 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 30 0d 0a  ol1..----..-70..
12ab0 2d 37 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -70....query I r
12ac0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
12ad0 20 2d 20 28 20 63 6f 6c 31 20 29 20 41 53 20 63   - ( col1 ) AS c
12ae0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol1 FROM tab1 GR
12af0 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31  OUP BY tab1.col1
12b00 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d 0a 35 37 0d 0a  ..----..44..57..
12b10 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
12b20 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 37 31 20  sort..SELECT 71 
12b30 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
12b40 31 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d  1 GROUP BY col1.
12b50 0a 2d 2d 2d 2d 0d 0a 37 31 0d 0a 37 31 0d 0a 37  .----..71..71..7
12b60 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
12b70 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 32  sort..SELECT + 2
12b80 38 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  8 AS col0 FROM t
12b90 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab0 GROUP BY tab
12ba0 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 32 38  0.col1..----..28
12bb0 0d 0a 32 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..28....query I 
12bc0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
12bd0 41 4c 4c 20 33 32 20 46 52 4f 4d 20 74 61 62 31  ALL 32 FROM tab1
12be0 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
12bf0 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y cor0.col2..---
12c00 2d 0d 0a 33 32 0d 0a 33 32 0d 0a 33 32 0d 0a 0d  -..32..32..32...
12c10 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
12c20 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e 63 6f  ..SELECT cor0.co
12c30 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l1 AS col1 FROM 
12c40 74 61 62 31 20 41 53 20 63 6f 72 30 20 43 52 4f  tab1 AS cor0 CRO
12c50 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53 20  SS JOIN tab1 AS 
12c60 63 6f 72 31 20 47 52 4f 55 50 20 42 59 20 63 6f  cor1 GROUP BY co
12c70 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34  r0.col1..----..4
12c80 34 0d 0a 35 37 0d 0a 36 0d 0a 0d 0a 71 75 65 72  4..57..6....quer
12c90 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
12ca0 45 43 54 20 2b 20 2d 20 34 35 20 46 52 4f 4d 20  ECT + - 45 FROM 
12cb0 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
12cc0 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b1.col0..----..-
12cd0 34 35 0d 0a 2d 34 35 0d 0a 2d 34 35 0d 0a 0d 0a  45..-45..-45....
12ce0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
12cf0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
12d00 20 2b 20 33 32 20 2a 20 63 6f 72 30 2e 63 6f 6c   + 32 * cor0.col
12d10 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
12d20 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
12d30 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 33  0.col1..----..13
12d40 31 32 0d 0a 31 38 38 38 0d 0a 31 39 35 32 0d 0a  12..1888..1952..
12d50 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
12d60 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
12d70 2d 20 37 20 2b 20 74 61 62 30 2e 63 6f 6c 30 20  - 7 + tab0.col0 
12d80 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
12d90 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d  BY tab0.col0..--
12da0 2d 2d 0d 0a 31 39 0d 0a 33 36 0d 0a 37 36 0d 0a  --..19..36..76..
12db0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
12dc0 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
12dd0 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
12de0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
12df0 65 6c 2d 36 31 36 0d 0a 53 45 4c 45 43 54 20 44  el-616..SELECT D
12e00 49 53 54 49 4e 43 54 20 2d 20 2b 20 74 61 62 30  ISTINCT - + tab0
12e10 2e 63 6f 6c 30 20 44 49 56 20 74 61 62 30 2e 63  .col0 DIV tab0.c
12e20 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol0 AS col2 FROM
12e30 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
12e40 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0.col0..----..
12e50 2d 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  -1....skipif mys
12e60 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
12e70 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
12e80 73 6f 72 74 20 6c 61 62 65 6c 2d 36 31 36 0d 0a  sort label-616..
12e90 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
12ea0 2d 20 2b 20 74 61 62 30 2e 63 6f 6c 30 20 2f 20  - + tab0.col0 / 
12eb0 74 61 62 30 2e 63 6f 6c 30 20 41 53 20 63 6f 6c  tab0.col0 AS col
12ec0 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55  2 FROM tab0 GROU
12ed0 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a  P BY tab0.col0..
12ee0 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 0d 0a 71 75 65 72  ----..-1....quer
12ef0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
12f00 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2b  ECT DISTINCT - +
12f10 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52   col2 AS col0 FR
12f20 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
12f30 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   tab2.col2..----
12f40 0d 0a 2d 35 38 0d 0a 2d 37 39 0d 0a 2d 38 37 0d  ..-58..-79..-87.
12f50 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
12f60 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
12f70 4c 20 68 61 73 20 73 74 72 69 63 74 20 63 6f 6c  L has strict col
12f80 75 6d 6e 20 75 73 61 67 65 20 66 6f 72 20 47 52  umn usage for GR
12f90 4f 55 50 20 42 59 20 63 6c 61 75 73 65 73 0d 0a  OUP BY clauses..
12fa0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
12fb0 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20 2a 20 43  .SELECT col1 * C
12fc0 4f 41 4c 45 53 43 45 20 28 20 33 32 2c 20 2d 20  OALESCE ( 32, - 
12fd0 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 32 20 46  col2 ) AS col2 F
12fe0 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42  ROM tab0 GROUP B
12ff0 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  Y col1..----..0.
13000 0a 32 35 39 32 0d 0a 0d 0a 73 6b 69 70 69 66 20  .2592....skipif 
13010 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
13020 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
13030 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
13040 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
13050 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
13060 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 72 30  t..SELECT - cor0
13070 2e 63 6f 6c 30 20 63 6f 6c 30 20 46 52 4f 4d 20  .col0 col0 FROM 
13080 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f  tab1 AS cor0 GRO
13090 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c  UP BY cor0.col0,
130a0 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   cor0.col0..----
130b0 0d 0a 2d 32 32 0d 0a 2d 32 38 0d 0a 2d 38 32 0d  ..-22..-28..-82.
130c0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
130d0 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 33 33 20  rt..SELECT - 33 
130e0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
130f0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
13100 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 33 0d  col0..----..-33.
13110 0a 2d 33 33 0d 0a 2d 33 33 0d 0a 0d 0a 71 75 65  .-33..-33....que
13120 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
13130 4c 45 43 54 20 2d 20 74 61 62 32 2e 63 6f 6c 31  LECT - tab2.col1
13140 20 2a 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c   * - col1 AS col
13150 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  0 FROM tab2 GROU
13160 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a  P BY tab2.col1..
13170 2d 2d 2d 2d 0d 0a 31 36 38 31 0d 0a 33 34 38 31  ----..1681..3481
13180 0d 0a 33 37 32 31 0d 0a 0d 0a 71 75 65 72 79 20  ..3721....query 
13190 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
131a0 54 20 34 31 20 46 52 4f 4d 20 74 61 62 32 20 47  T 41 FROM tab2 G
131b0 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
131c0 31 0d 0a 2d 2d 2d 2d 0d 0a 34 31 0d 0a 34 31 0d  1..----..41..41.
131d0 0a 34 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .41....query I r
131e0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
131f0 20 2d 20 37 30 20 41 53 20 63 6f 6c 32 20 46 52   - 70 AS col2 FR
13200 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59  OM tab0 GROUP BY
13210 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   tab0.col0..----
13220 0d 0a 37 30 0d 0a 37 30 0d 0a 37 30 0d 0a 0d 0a  ..70..70..70....
13230 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
13240 0a 53 45 4c 45 43 54 20 2d 20 34 33 20 41 53 20  .SELECT - 43 AS 
13250 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 47  col1 FROM tab1 G
13260 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
13270 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 33 0d 0a 2d 34  0..----..-43..-4
13280 33 0d 0a 2d 34 33 0d 0a 0d 0a 71 75 65 72 79 20  3..-43....query 
13290 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
132a0 54 20 33 37 20 2a 20 2b 20 74 61 62 32 2e 63 6f  T 37 * + tab2.co
132b0 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f  l0 FROM tab2 GRO
132c0 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d  UP BY tab2.col0.
132d0 0a 2d 2d 2d 2d 0d 0a 33 33 36 37 0d 0a 33 34 30  .----..3367..340
132e0 34 0d 0a 35 35 35 0d 0a 0d 0a 71 75 65 72 79 20  4..555....query 
132f0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
13300 54 20 39 34 20 46 52 4f 4d 20 74 61 62 32 20 41  T 94 FROM tab2 A
13310 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
13320 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 39 34 0d 0a  col1..----..94..
13330 39 34 0d 0a 39 34 0d 0a 0d 0a 71 75 65 72 79 20  94..94....query 
13340 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
13350 54 20 41 4c 4c 20 2b 20 63 6f 72 30 2e 63 6f 6c  T ALL + cor0.col
13360 31 20 2a 20 2d 20 63 6f 72 30 2e 63 6f 6c 31 20  1 * - cor0.col1 
13370 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
13380 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
13390 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 38  col1..----..-168
133a0 31 0d 0a 2d 33 34 38 31 0d 0a 2d 33 37 32 31 0d  1..-3481..-3721.
133b0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
133c0 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  rt..SELECT ALL +
133d0 20 34 37 20 46 52 4f 4d 20 74 61 62 30 20 47 52   47 FROM tab0 GR
133e0 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32  OUP BY tab0.col2
133f0 0d 0a 2d 2d 2d 2d 0d 0a 34 37 0d 0a 34 37 0d 0a  ..----..47..47..
13400 34 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  47....query I ro
13410 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
13420 4c 20 2b 20 31 34 20 41 53 20 63 6f 6c 30 20 46  L + 14 AS col0 F
13430 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42  ROM tab0 GROUP B
13440 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y tab0.col1..---
13450 2d 0d 0a 31 34 0d 0a 31 34 0d 0a 0d 0a 71 75 65  -..14..14....que
13460 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
13470 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f  LECT DISTINCT co
13480 72 30 2e 63 6f 6c 30 20 2a 20 35 37 20 46 52 4f  r0.col0 * 57 FRO
13490 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47  M tab1 AS cor0 G
134a0 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
134b0 30 2c 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31  0, col0..----..1
134c0 32 35 34 0d 0a 31 35 39 36 0d 0a 34 36 37 34 0d  254..1596..4674.
134d0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
134e0 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
134f0 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
13500 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
13510 62 65 6c 2d 36 33 31 0d 0a 53 45 4c 45 43 54 20  bel-631..SELECT 
13520 41 4c 4c 20 31 36 20 44 49 56 20 2d 20 34 20 46  ALL 16 DIV - 4 F
13530 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42  ROM tab0 GROUP B
13540 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y tab0.col0..---
13550 2d 0d 0a 2d 34 0d 0a 2d 34 0d 0a 2d 34 0d 0a 0d  -..-4..-4..-4...
13560 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
13570 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
13580 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
13590 6c 61 62 65 6c 2d 36 33 31 0d 0a 53 45 4c 45 43  label-631..SELEC
135a0 54 20 41 4c 4c 20 31 36 20 2f 20 2d 20 34 20 46  T ALL 16 / - 4 F
135b0 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42  ROM tab0 GROUP B
135c0 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y tab0.col0..---
135d0 2d 0d 0a 2d 34 0d 0a 2d 34 0d 0a 2d 34 0d 0a 0d  -..-4..-4..-4...
135e0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
135f0 0d 0a 53 45 4c 45 43 54 20 36 35 20 46 52 4f 4d  ..SELECT 65 FROM
13600 20 74 61 62 30 2c 20 74 61 62 32 20 41 53 20 63   tab0, tab2 AS c
13610 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
13620 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 36 35  0.col1..----..65
13630 0d 0a 36 35 0d 0a 36 35 0d 0a 0d 0a 71 75 65 72  ..65..65....quer
13640 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
13650 45 43 54 20 63 6f 72 30 2e 63 6f 6c 31 20 2a 20  ECT cor0.col1 * 
13660 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 46 52 4f 4d  + cor0.col1 FROM
13670 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52   tab0 AS cor0 GR
13680 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31  OUP BY cor0.col1
13690 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 36 35 36 31 0d  ..----..0..6561.
136a0 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
136b0 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
136c0 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
136d0 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
136e0 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
136f0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
13700 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 72  ECT DISTINCT cor
13710 30 2e 63 6f 6c 32 20 2b 20 36 39 20 63 6f 6c 30  0.col2 + 69 col0
13720 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
13730 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
13740 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 32 37  .col2..----..127
13750 0d 0a 31 34 38 0d 0a 31 35 36 0d 0a 0d 0a 6f 6e  ..148..156....on
13760 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
13770 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
13780 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
13790 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36   rowsort label-6
137a0 33 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  35..SELECT ALL -
137b0 20 63 6f 72 30 2e 63 6f 6c 32 20 2b 20 43 41 53   cor0.col2 + CAS
137c0 54 28 20 2d 20 32 38 20 41 53 20 53 49 47 4e 45  T( - 28 AS SIGNE
137d0 44 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  D ) AS col0 FROM
137e0 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47 52   tab2 AS cor0 GR
137f0 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d  OUP BY col2..---
13800 2d 0d 0a 2d 31 30 37 0d 0a 2d 31 31 35 0d 0a 2d  -..-107..-115..-
13810 38 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  86....skipif mys
13820 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
13830 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
13840 73 6f 72 74 20 6c 61 62 65 6c 2d 36 33 35 0d 0a  sort label-635..
13850 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 72  SELECT ALL - cor
13860 30 2e 63 6f 6c 32 20 2b 20 43 41 53 54 20 28 20  0.col2 + CAST ( 
13870 2d 20 32 38 20 41 53 20 49 4e 54 45 47 45 52 20  - 28 AS INTEGER 
13880 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
13890 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
138a0 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  P BY col2..----.
138b0 0a 2d 31 30 37 0d 0a 2d 31 31 35 0d 0a 2d 38 36  .-107..-115..-86
138c0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
138d0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20  ort..SELECT - - 
138e0 74 61 62 31 2e 63 6f 6c 30 20 41 53 20 63 6f 6c  tab1.col0 AS col
138f0 32 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  2 FROM tab1 GROU
13900 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a  P BY tab1.col0..
13910 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32 38 0d 0a 38 32  ----..22..28..82
13920 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
13930 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
13940 49 4e 43 54 20 2d 20 39 33 20 2a 20 74 61 62 31  INCT - 93 * tab1
13950 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20  .col1 FROM tab1 
13960 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
13970 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 30 39 32 0d  l1..----..-4092.
13980 0a 2d 35 33 30 31 0d 0a 2d 35 35 38 0d 0a 0d 0a  .-5301..-558....
13990 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
139a0 0a 53 45 4c 45 43 54 20 43 4f 41 4c 45 53 43 45  .SELECT COALESCE
139b0 20 28 20 36 34 2c 20 2d 20 37 20 2b 20 63 6f 72   ( 64, - 7 + cor
139c0 30 2e 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61  0.col0 ) FROM ta
139d0 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b2 AS cor0 GROUP
139e0 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a   BY col0..----..
139f0 36 34 0d 0a 36 34 0d 0a 36 34 0d 0a 0d 0a 71 75  64..64..64....qu
13a00 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
13a10 45 4c 45 43 54 20 2b 20 39 39 20 46 52 4f 4d 20  ELECT + 99 FROM 
13a20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
13a30 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 39  b1.col2..----..9
13a40 39 0d 0a 39 39 0d 0a 39 39 0d 0a 0d 0a 71 75 65  9..99..99....que
13a50 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
13a60 4c 45 43 54 20 28 20 35 35 20 29 20 41 53 20 63  LECT ( 55 ) AS c
13a70 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol2 FROM tab1 GR
13a80 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31  OUP BY tab1.col1
13a90 0d 0a 2d 2d 2d 2d 0d 0a 35 35 0d 0a 35 35 0d 0a  ..----..55..55..
13aa0 35 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  55....query I ro
13ab0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
13ac0 4c 20 2d 20 37 31 20 46 52 4f 4d 20 74 61 62 30  L - 71 FROM tab0
13ad0 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a   GROUP BY col2..
13ae0 2d 2d 2d 2d 0d 0a 2d 37 31 0d 0a 2d 37 31 0d 0a  ----..-71..-71..
13af0 2d 37 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -71....query I r
13b00 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 32  owsort..SELECT 2
13b10 33 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  3 FROM tab1 AS c
13b20 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
13b30 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c  0.col1, cor0.col
13b40 32 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 32 33 0d  2..----..23..23.
13b50 0a 32 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .23....query I r
13b60 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
13b70 49 53 54 49 4e 43 54 20 2d 20 2b 20 74 61 62 30  ISTINCT - + tab0
13b80 2e 63 6f 6c 32 20 2b 20 74 61 62 30 2e 63 6f 6c  .col2 + tab0.col
13b90 32 20 2a 20 74 61 62 30 2e 63 6f 6c 32 20 46 52  2 * tab0.col2 FR
13ba0 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59  OM tab0 GROUP BY
13bb0 20 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   tab0.col2..----
13bc0 0d 0a 31 34 30 36 0d 0a 35 35 32 0d 0a 36 31 36  ..1406..552..616
13bd0 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
13be0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
13bf0 20 63 6f 6c 30 20 2b 20 63 6f 72 30 2e 63 6f 6c   col0 + cor0.col
13c00 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  1 AS col2 FROM t
13c10 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
13c20 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20  P BY cor0.col0, 
13c30 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e  cor0.col1, cor0.
13c40 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 33 33 0d  col1..----..133.
13c50 0a 31 35 30 0d 0a 37 36 0d 0a 0d 0a 71 75 65 72  .150..76....quer
13c60 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
13c70 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 74  ECT DISTINCT + t
13c80 61 62 32 2e 63 6f 6c 31 20 2b 20 63 6f 6c 31 20  ab2.col1 + col1 
13c90 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
13ca0 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31  BY col1..----..1
13cb0 31 38 0d 0a 31 32 32 0d 0a 38 32 0d 0a 0d 0a 71  18..122..82....q
13cc0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
13cd0 53 45 4c 45 43 54 20 2d 20 2b 20 38 39 20 46 52  SELECT - + 89 FR
13ce0 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59  OM tab0 GROUP BY
13cf0 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   tab0.col1..----
13d00 0d 0a 2d 38 39 0d 0a 2d 38 39 0d 0a 0d 0a 71 75  ..-89..-89....qu
13d10 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
13d20 45 4c 45 43 54 20 41 4c 4c 20 2b 20 28 20 2b 20  ELECT ALL + ( + 
13d30 32 37 20 29 20 2b 20 2d 20 74 61 62 32 2e 63 6f  27 ) + - tab2.co
13d40 6c 32 20 2a 20 2b 20 34 34 20 41 53 20 63 6f 6c  l2 * + 44 AS col
13d50 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  0 FROM tab2 GROU
13d60 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a  P BY tab2.col2..
13d70 2d 2d 2d 2d 0d 0a 2d 32 35 32 35 0d 0a 2d 33 34  ----..-2525..-34
13d80 34 39 0d 0a 2d 33 38 30 31 0d 0a 0d 0a 71 75 65  49..-3801....que
13d90 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
13da0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f  LECT DISTINCT co
13db0 72 31 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20  r1.col1 AS col0 
13dc0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
13dd0 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62  0 CROSS JOIN tab
13de0 30 20 41 53 20 63 6f 72 31 20 47 52 4f 55 50 20  0 AS cor1 GROUP 
13df0 42 59 20 63 6f 72 31 2e 63 6f 6c 31 0d 0a 2d 2d  BY cor1.col1..--
13e00 2d 2d 0d 0a 30 0d 0a 38 31 0d 0a 0d 0a 71 75 65  --..0..81....que
13e10 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
13e20 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20 2d 20  LECT ALL col2 - 
13e30 33 36 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  36 AS col1 FROM 
13e40 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61  tab0 GROUP BY ta
13e50 62 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  b0.col2..----..-
13e60 31 32 0d 0a 32 0d 0a 34 33 0d 0a 0d 0a 71 75 65  12..2..43....que
13e70 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
13e80 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c 31 20 2a  LECT cor0.col1 *
13e90 20 2b 20 31 34 20 41 53 20 63 6f 6c 32 20 46 52   + 14 AS col2 FR
13ea0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
13eb0 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
13ec0 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d  l0, cor0.col1..-
13ed0 2d 2d 2d 0d 0a 35 37 34 0d 0a 38 32 36 0d 0a 38  ---..574..826..8
13ee0 35 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  54....query I ro
13ef0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
13f00 63 6f 72 30 2e 63 6f 6c 30 20 41 53 20 63 6f 6c  cor0.col0 AS col
13f10 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
13f20 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
13f30 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c  0.col0, cor0.col
13f40 30 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d  0, cor0.col1..--
13f50 2d 2d 0d 0a 2d 32 36 0d 0a 2d 34 33 0d 0a 2d 38  --..-26..-43..-8
13f60 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
13f70 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 36  sort..SELECT - 6
13f80 32 20 2b 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20  2 + + cor0.col1 
13f90 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
13fa0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
13fb0 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 0d  col1..----..-18.
13fc0 0a 2d 35 0d 0a 2d 35 36 0d 0a 0d 0a 71 75 65 72  .-5..-56....quer
13fd0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
13fe0 45 43 54 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20  ECT + cor0.col1 
13ff0 2a 20 2b 20 31 33 20 46 52 4f 4d 20 74 61 62 31  * + 13 FROM tab1
14000 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
14010 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y cor0.col1..---
14020 2d 0d 0a 35 37 32 0d 0a 37 34 31 0d 0a 37 38 0d  -..572..741..78.
14030 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
14040 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
14050 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
14060 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
14070 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
14080 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
14090 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 20 63  ECT ALL + col0 c
140a0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 47 52  ol2 FROM tab2 GR
140b0 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30  OUP BY tab2.col0
140c0 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 39 31 0d 0a  ..----..15..91..
140d0 39 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  92....query I ro
140e0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 36 31  wsort..SELECT 61
140f0 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
14100 20 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d   BY tab0.col1..-
14110 2d 2d 2d 0d 0a 36 31 0d 0a 36 31 0d 0a 0d 0a 71  ---..61..61....q
14120 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
14130 53 45 4c 45 43 54 20 37 38 20 46 52 4f 4d 20 74  SELECT 78 FROM t
14140 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab0 GROUP BY tab
14150 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 37 38  0.col1..----..78
14160 0d 0a 37 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..78....query I 
14170 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
14180 41 4c 4c 20 2d 20 39 31 20 41 53 20 63 6f 6c 32  ALL - 91 AS col2
14190 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
141a0 20 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d   BY tab0.col1..-
141b0 2d 2d 2d 0d 0a 2d 39 31 0d 0a 2d 39 31 0d 0a 0d  ---..-91..-91...
141c0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
141d0 0d 0a 53 45 4c 45 43 54 20 38 32 20 41 53 20 63  ..SELECT 82 AS c
141e0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol2 FROM tab0 AS
141f0 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
14200 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  or0.col0..----..
14210 38 32 0d 0a 38 32 0d 0a 38 32 0d 0a 0d 0a 71 75  82..82..82....qu
14220 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
14230 45 4c 45 43 54 20 36 32 20 2b 20 74 61 62 32 2e  ELECT 62 + tab2.
14240 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f  col2 AS col2 FRO
14250 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
14260 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  tab2.col2..----.
14270 0a 31 32 30 0d 0a 31 34 31 0d 0a 31 34 39 0d 0a  .120..141..149..
14280 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
14290 74 0d 0a 53 45 4c 45 43 54 20 2d 20 38 34 20 46  t..SELECT - 84 F
142a0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
142b0 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31   CROSS JOIN tab1
142c0 20 41 53 20 63 6f 72 31 20 47 52 4f 55 50 20 42   AS cor1 GROUP B
142d0 59 20 63 6f 72 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y cor1.col2..---
142e0 2d 0d 0a 2d 38 34 0d 0a 2d 38 34 0d 0a 2d 38 34  -..-84..-84..-84
142f0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
14300 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 28 20  ort..SELECT + ( 
14310 2d 20 63 6f 72 30 2e 63 6f 6c 31 20 29 20 46 52  - cor0.col1 ) FR
14320 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
14330 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
14340 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 31 0d 0a 2d  l1..----..-41..-
14350 35 39 0d 0a 2d 36 31 0d 0a 0d 0a 71 75 65 72 79  59..-61....query
14360 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
14370 43 54 20 41 4c 4c 20 37 39 20 41 53 20 63 6f 6c  CT ALL 79 AS col
14380 31 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  1 FROM tab2 GROU
14390 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a  P BY tab2.col2..
143a0 2d 2d 2d 2d 0d 0a 37 39 0d 0a 37 39 0d 0a 37 39  ----..79..79..79
143b0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
143c0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20  ort..SELECT - + 
143d0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47  col2 FROM tab1 G
143e0 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
143f0 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 35 0d 0a 2d 37  2..----..-45..-7
14400 31 0d 0a 2d 38 0d 0a 0d 0a 71 75 65 72 79 20 49  1..-8....query I
14410 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
14420 20 2d 20 2b 20 74 61 62 32 2e 63 6f 6c 32 20 2b   - + tab2.col2 +
14430 20 74 61 62 32 2e 63 6f 6c 32 20 46 52 4f 4d 20   tab2.col2 FROM 
14440 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61  tab2 GROUP BY ta
14450 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 30  b2.col2..----..0
14460 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  ..0..0....query 
14470 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
14480 54 20 41 4c 4c 20 2d 20 33 39 20 46 52 4f 4d 20  T ALL - 39 FROM 
14490 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f  tab0 AS cor0 GRO
144a0 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d  UP BY cor0.col2.
144b0 0a 2d 2d 2d 2d 0d 0a 2d 33 39 0d 0a 2d 33 39 0d  .----..-39..-39.
144c0 0a 2d 33 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-39....query I 
144d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
144e0 41 4c 4c 20 2b 20 74 61 62 30 2e 63 6f 6c 32 20  ALL + tab0.col2 
144f0 2a 20 74 61 62 30 2e 63 6f 6c 32 20 46 52 4f 4d  * tab0.col2 FROM
14500 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 63   tab0 GROUP BY c
14510 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 34 34 34 0d  ol2..----..1444.
14520 0a 35 37 36 0d 0a 36 32 34 31 0d 0a 0d 0a 71 75  .576..6241....qu
14530 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
14540 45 4c 45 43 54 20 2d 20 63 6f 72 30 2e 63 6f 6c  ELECT - cor0.col
14550 31 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20  1 + - col1 FROM 
14560 74 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f  tab2 AS cor0 GRO
14570 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d  UP BY cor0.col1.
14580 0a 2d 2d 2d 2d 0d 0a 2d 31 31 38 0d 0a 2d 31 32  .----..-118..-12
14590 32 0d 0a 2d 38 32 0d 0a 0d 0a 71 75 65 72 79 20  2..-82....query 
145a0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
145b0 54 20 41 4c 4c 20 35 37 20 41 53 20 63 6f 6c 31  T ALL 57 AS col1
145c0 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20   FROM tab2 cor0 
145d0 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
145e0 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 35 37 0d 0a 35 37  l1..----..57..57
145f0 0d 0a 35 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..57....query I 
14600 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
14610 33 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  30 AS col0 FROM 
14620 74 61 62 31 20 41 53 20 63 6f 72 30 20 43 52 4f  tab1 AS cor0 CRO
14630 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53 20  SS JOIN tab1 AS 
14640 63 6f 72 31 20 47 52 4f 55 50 20 42 59 20 63 6f  cor1 GROUP BY co
14650 72 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33  r1.col2..----..3
14660 30 0d 0a 33 30 0d 0a 33 30 0d 0a 0d 0a 71 75 65  0..30..30....que
14670 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
14680 4c 45 43 54 20 2d 20 36 38 20 46 52 4f 4d 20 74  LECT - 68 FROM t
14690 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab1 AS cor0 GROU
146a0 50 20 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  P BY col1..----.
146b0 0a 2d 36 38 0d 0a 2d 36 38 0d 0a 2d 36 38 0d 0a  .-68..-68..-68..
146c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
146d0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 36 39  t..SELECT ALL 69
146e0 20 2b 20 63 6f 6c 31 20 2a 20 63 6f 72 30 2e 63   + col1 * cor0.c
146f0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol1 FROM tab1 AS
14700 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
14710 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  or0.col1..----..
14720 31 30 35 0d 0a 32 30 30 35 0d 0a 33 33 31 38 0d  105..2005..3318.
14730 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
14740 72 74 0d 0a 53 45 4c 45 43 54 20 34 36 20 41 53  rt..SELECT 46 AS
14750 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 2c   col0 FROM tab1,
14760 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47 52   tab2 AS cor0 GR
14770 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32  OUP BY tab1.col2
14780 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 34 36 0d 0a  ..----..46..46..
14790 34 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  46....skipif pos
147a0 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
147b0 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
147c0 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
147d0 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
147e0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
147f0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
14800 2d 20 63 6f 72 30 2e 63 6f 6c 31 20 2a 20 63 6f  - cor0.col1 * co
14810 6c 31 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  l1 col0 FROM tab
14820 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  2 AS cor0 GROUP 
14830 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d  BY cor0.col1..--
14840 2d 2d 0d 0a 2d 31 36 38 31 0d 0a 2d 33 34 38 31  --..-1681..-3481
14850 0d 0a 2d 33 37 32 31 0d 0a 0d 0a 71 75 65 72 79  ..-3721....query
14860 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
14870 43 54 20 2d 20 2b 20 38 36 20 46 52 4f 4d 20 74  CT - + 86 FROM t
14880 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab0 GROUP BY tab
14890 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38  0.col0..----..-8
148a0 36 0d 0a 2d 38 36 0d 0a 2d 38 36 0d 0a 0d 0a 6f  6..-86..-86....o
148b0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
148c0 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
148d0 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
148e0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
148f0 36 37 35 0d 0a 53 45 4c 45 43 54 20 2d 20 43 41  675..SELECT - CA
14900 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
14910 45 44 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  ED ) AS col2 FRO
14920 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47  M tab0 AS cor0 G
14930 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
14940 31 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d  1, cor0.col1..--
14950 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
14960 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
14970 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
14980 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
14990 20 6c 61 62 65 6c 2d 36 37 35 0d 0a 53 45 4c 45   label-675..SELE
149a0 43 54 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c  CT - CAST ( NULL
149b0 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41 53   AS INTEGER ) AS
149c0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
149d0 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
149e0 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30   cor0.col1, cor0
149f0 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c  .col1..----..NUL
14a00 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79  L..NULL....query
14a10 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
14a20 43 54 20 2d 20 39 32 20 41 53 20 63 6f 6c 32 20  CT - 92 AS col2 
14a30 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
14a40 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d  BY tab0.col2..--
14a50 2d 2d 0d 0a 2d 39 32 0d 0a 2d 39 32 0d 0a 2d 39  --..-92..-92..-9
14a60 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
14a70 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 33 35 20  sort..SELECT 35 
14a80 2b 20 2b 20 63 6f 72 30 2e 63 6f 6c 32 20 41 53  + + cor0.col2 AS
14a90 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
14aa0 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
14ab0 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   cor0.col2..----
14ac0 0d 0a 31 31 34 0d 0a 35 39 0d 0a 37 33 0d 0a 0d  ..114..59..73...
14ad0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
14ae0 0d 0a 53 45 4c 45 43 54 20 2d 20 31 35 20 2a 20  ..SELECT - 15 * 
14af0 63 6f 72 30 2e 63 6f 6c 31 20 46 52 4f 4d 20 74  cor0.col1 FROM t
14b00 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab0 AS cor0 GROU
14b10 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a  P BY cor0.col1..
14b20 2d 2d 2d 2d 0d 0a 2d 31 32 31 35 0d 0a 30 0d 0a  ----..-1215..0..
14b30 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
14b40 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
14b50 43 54 20 2d 20 2b 20 74 61 62 32 2e 63 6f 6c 31  CT - + tab2.col1
14b60 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
14b70 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d   BY tab2.col1..-
14b80 2d 2d 2d 0d 0a 2d 34 31 0d 0a 2d 35 39 0d 0a 2d  ---..-41..-59..-
14b90 36 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  61....query I ro
14ba0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
14bb0 74 61 62 30 2e 63 6f 6c 30 20 46 52 4f 4d 20 74  tab0.col0 FROM t
14bc0 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55  ab0 WHERE NOT NU
14bd0 4c 4c 20 49 53 20 4e 55 4c 4c 20 47 52 4f 55 50  LL IS NULL GROUP
14be0 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d   BY tab0.col0..-
14bf0 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ---....query I r
14c00 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
14c10 4c 4c 20 2b 20 74 61 62 30 2e 63 6f 6c 31 20 2a  LL + tab0.col1 *
14c20 20 74 61 62 30 2e 63 6f 6c 31 20 46 52 4f 4d 20   tab0.col1 FROM 
14c30 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 63 6f  tab0 GROUP BY co
14c40 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 36 35 36  l1..----..0..656
14c50 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
14c60 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
14c70 54 49 4e 43 54 20 2b 20 2d 20 74 61 62 32 2e 63  TINCT + - tab2.c
14c80 6f 6c 32 20 2a 20 38 38 20 46 52 4f 4d 20 74 61  ol2 * 88 FROM ta
14c90 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32  b2 GROUP BY tab2
14ca0 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31  .col2..----..-51
14cb0 30 34 0d 0a 2d 36 39 35 32 0d 0a 2d 37 36 35 36  04..-6952..-7656
14cc0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
14cd0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20  ort..SELECT + - 
14ce0 74 61 62 32 2e 63 6f 6c 31 20 2a 20 2d 20 28 20  tab2.col1 * - ( 
14cf0 2b 20 74 61 62 32 2e 63 6f 6c 31 20 29 20 41 53  + tab2.col1 ) AS
14d00 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
14d10 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
14d20 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 36 38 31 0d 0a  l1..----..1681..
14d30 33 34 38 31 0d 0a 33 37 32 31 0d 0a 0d 0a 71 75  3481..3721....qu
14d40 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
14d50 45 4c 45 43 54 20 2d 20 63 6f 72 30 2e 63 6f 6c  ELECT - cor0.col
14d60 31 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 41 53  1 + cor0.col1 AS
14d70 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
14d80 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
14d90 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 6c 31   cor0.col1, col1
14da0 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d  ..----..0..0..0.
14db0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
14dc0 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  rt..SELECT ALL +
14dd0 20 2b 20 35 36 20 46 52 4f 4d 20 74 61 62 32 20   + 56 FROM tab2 
14de0 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
14df0 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 35 36 0d 0a 35 36  l0..----..56..56
14e00 0d 0a 35 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..56....query I 
14e10 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
14e20 44 49 53 54 49 4e 43 54 20 2d 20 34 20 41 53 20  DISTINCT - 4 AS 
14e30 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 47  col1 FROM tab1 G
14e40 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
14e50 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 0d 0a 0d 0a 71  0..----..-4....q
14e60 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
14e70 53 45 4c 45 43 54 20 2d 20 63 6f 72 30 2e 63 6f  SELECT - cor0.co
14e80 6c 31 20 2a 20 2b 20 63 6f 72 30 2e 63 6f 6c 32  l1 * + cor0.col2
14e90 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
14ea0 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
14eb0 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63   BY cor0.col1, c
14ec0 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  or0.col2..----..
14ed0 2d 31 39 34 34 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71  -1944..0..0....q
14ee0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
14ef0 53 45 4c 45 43 54 20 2b 20 63 6f 72 30 2e 63 6f  SELECT + cor0.co
14f00 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l1 AS col0 FROM 
14f10 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f  tab1 AS cor0 GRO
14f20 55 50 20 42 59 20 63 6f 6c 31 2c 20 63 6f 72 30  UP BY col1, cor0
14f30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d  .col2..----..44.
14f40 0a 35 37 0d 0a 36 0d 0a 0d 0a 71 75 65 72 79 20  .57..6....query 
14f50 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
14f60 54 20 2b 20 2b 20 74 61 62 31 2e 63 6f 6c 32 20  T + + tab1.col2 
14f70 2a 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46  * col2 AS col1 F
14f80 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
14f90 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab1.col2..---
14fa0 2d 0d 0a 32 30 32 35 0d 0a 35 30 34 31 0d 0a 36  -..2025..5041..6
14fb0 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  4....query I row
14fc0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
14fd0 20 32 38 20 46 52 4f 4d 20 74 61 62 31 20 47 52   28 FROM tab1 GR
14fe0 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31  OUP BY tab1.col1
14ff0 0d 0a 2d 2d 2d 2d 0d 0a 32 38 0d 0a 32 38 0d 0a  ..----..28..28..
15000 32 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  28....onlyif mys
15010 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
15020 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
15030 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
15040 20 6c 61 62 65 6c 2d 36 39 31 0d 0a 53 45 4c 45   label-691..SELE
15050 43 54 20 41 4c 4c 20 2d 20 28 20 74 61 62 31 2e  CT ALL - ( tab1.
15060 63 6f 6c 31 20 29 20 44 49 56 20 33 32 20 46 52  col1 ) DIV 32 FR
15070 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
15080 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   tab1.col1..----
15090 0d 0a 2d 31 0d 0a 2d 31 0d 0a 30 0d 0a 0d 0a 73  ..-1..-1..0....s
150a0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
150b0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
150c0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
150d0 62 65 6c 2d 36 39 31 0d 0a 53 45 4c 45 43 54 20  bel-691..SELECT 
150e0 41 4c 4c 20 2d 20 28 20 74 61 62 31 2e 63 6f 6c  ALL - ( tab1.col
150f0 31 20 29 20 2f 20 33 32 20 46 52 4f 4d 20 74 61  1 ) / 32 FROM ta
15100 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31  b1 GROUP BY tab1
15110 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d  .col1..----..-1.
15120 0a 2d 31 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  .-1..0....query 
15130 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
15140 54 20 41 4c 4c 20 2b 20 63 6f 72 30 2e 63 6f 6c  T ALL + cor0.col
15150 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  2 AS col0 FROM t
15160 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
15170 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 2c 20  P BY cor0.col2, 
15180 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor0.col0..----.
15190 0a 35 38 0d 0a 37 39 0d 0a 38 37 0d 0a 0d 0a 71  .58..79..87....q
151a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
151b0 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43 4f 41  SELECT ALL - COA
151c0 4c 45 53 43 45 20 28 20 63 6f 72 30 2e 63 6f 6c  LESCE ( cor0.col
151d0 30 2c 20 2b 20 63 6f 6c 30 2c 20 2d 20 28 20 63  0, + col0, - ( c
151e0 6f 72 30 2e 63 6f 6c 30 20 29 20 2d 20 63 6f 72  or0.col0 ) - cor
151f0 30 2e 63 6f 6c 31 20 29 20 2b 20 63 6f 72 30 2e  0.col1 ) + cor0.
15200 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f  col1 AS col1 FRO
15210 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47  M tab1 AS cor0 G
15220 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
15230 31 2c 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f  1, cor0.col1, co
15240 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  r0.col0..----..-
15250 31 36 0d 0a 2d 33 38 0d 0a 32 39 0d 0a 0d 0a 71  16..-38..29....q
15260 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
15270 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
15280 2b 20 38 37 20 46 52 4f 4d 20 74 61 62 32 20 41  + 87 FROM tab2 A
15290 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
152a0 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor0.col0..----.
152b0 0a 38 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .87....query I r
152c0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
152d0 4c 4c 20 2b 20 37 36 20 2a 20 2d 20 74 61 62 31  LL + 76 * - tab1
152e0 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20  .col2 FROM tab1 
152f0 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
15300 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 34 32 30 0d  l2..----..-3420.
15310 0a 2d 35 33 39 36 0d 0a 2d 36 30 38 0d 0a 0d 0a  .-5396..-608....
15320 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
15330 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
15340 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
15350 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
15360 2d 36 39 36 0d 0a 53 45 4c 45 43 54 20 44 49 53  -696..SELECT DIS
15370 54 49 4e 43 54 20 38 37 20 2b 20 74 61 62 30 2e  TINCT 87 + tab0.
15380 63 6f 6c 30 20 44 49 56 20 2d 20 63 6f 6c 30 20  col0 DIV - col0 
15390 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
153a0 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 38  BY col0..----..8
153b0 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  6....skipif mysq
153c0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
153d0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
153e0 6f 72 74 20 6c 61 62 65 6c 2d 36 39 36 0d 0a 53  ort label-696..S
153f0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 38  ELECT DISTINCT 8
15400 37 20 2b 20 74 61 62 30 2e 63 6f 6c 30 20 2f 20  7 + tab0.col0 / 
15410 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  - col0 FROM tab0
15420 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 30 0d 0a   GROUP BY col0..
15430 2d 2d 2d 2d 0d 0a 38 36 0d 0a 0d 0a 71 75 65 72  ----..86....quer
15440 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
15450 45 43 54 20 44 49 53 54 49 4e 43 54 20 74 61 62  ECT DISTINCT tab
15460 32 2e 63 6f 6c 30 20 2b 20 74 61 62 32 2e 63 6f  2.col0 + tab2.co
15470 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f  l0 FROM tab2 GRO
15480 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d  UP BY tab2.col0.
15490 0a 2d 2d 2d 2d 0d 0a 31 38 32 0d 0a 31 38 34 0d  .----..182..184.
154a0 0a 33 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .30....onlyif my
154b0 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
154c0 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
154d0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
154e0 74 20 6c 61 62 65 6c 2d 36 39 38 0d 0a 53 45 4c  t label-698..SEL
154f0 45 43 54 20 41 4c 4c 20 2b 20 43 41 53 45 20 2b  ECT ALL + CASE +
15500 20 74 61 62 31 2e 63 6f 6c 30 20 57 48 45 4e 20   tab1.col0 WHEN 
15510 74 61 62 31 2e 63 6f 6c 30 20 54 48 45 4e 20 2d  tab1.col0 THEN -
15520 20 74 61 62 31 2e 63 6f 6c 30 20 44 49 56 20 74   tab1.col0 DIV t
15530 61 62 31 2e 63 6f 6c 30 20 45 4e 44 20 41 53 20  ab1.col0 END AS 
15540 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47  col2 FROM tab1 G
15550 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
15560 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d  0..----..-1..-1.
15570 0a 2d 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .-1....skipif my
15580 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
15590 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
155a0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 39 38 0d  wsort label-698.
155b0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 41  .SELECT ALL + CA
155c0 53 45 20 2b 20 74 61 62 31 2e 63 6f 6c 30 20 57  SE + tab1.col0 W
155d0 48 45 4e 20 74 61 62 31 2e 63 6f 6c 30 20 54 48  HEN tab1.col0 TH
155e0 45 4e 20 2d 20 74 61 62 31 2e 63 6f 6c 30 20 2f  EN - tab1.col0 /
155f0 20 74 61 62 31 2e 63 6f 6c 30 20 45 4e 44 20 41   tab1.col0 END A
15600 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
15610 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
15620 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d  ol0..----..-1..-
15630 31 0d 0a 2d 31 0d 0a 0d 0a 71 75 65 72 79 20 49  1..-1....query I
15640 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
15650 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 28 20   DISTINCT + + ( 
15660 38 34 20 29 20 2b 20 2d 20 33 37 20 46 52 4f 4d  84 ) + - 37 FROM
15670 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74   tab1 GROUP BY t
15680 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab1.col0..----..
15690 34 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  47....query I ro
156a0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
156b0 2d 20 38 34 20 41 53 20 63 6f 6c 31 20 46 52 4f  - 84 AS col1 FRO
156c0 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
156d0 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab0.col0..----.
156e0 0a 2d 38 34 0d 0a 2d 38 34 0d 0a 2d 38 34 0d 0a  .-84..-84..-84..
156f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
15700 74 0d 0a 53 45 4c 45 43 54 20 2b 20 31 36 20 2a  t..SELECT + 16 *
15710 20 2b 20 37 33 20 46 52 4f 4d 20 74 61 62 30 20   + 73 FROM tab0 
15720 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f  GROUP BY tab0.co
15730 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 31 36 38 0d 0a  l1..----..1168..
15740 31 31 36 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20  1168....query I 
15750 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
15760 32 34 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  24 FROM tab2 AS 
15770 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
15780 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 32  r0.col1..----..2
15790 34 0d 0a 32 34 0d 0a 32 34 0d 0a 0d 0a 71 75 65  4..24..24....que
157a0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
157b0 4c 45 43 54 20 41 4c 4c 20 2d 20 35 37 20 46 52  LECT ALL - 57 FR
157c0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
157d0 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
157e0 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 37 0d 0a 2d  l2..----..-57..-
157f0 35 37 0d 0a 2d 35 37 0d 0a 0d 0a 71 75 65 72 79  57..-57....query
15800 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
15810 43 54 20 36 30 20 2b 20 2b 20 39 38 20 41 53 20  CT 60 + + 98 AS 
15820 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41  col2 FROM tab1 A
15830 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
15840 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  cor0.col2..----.
15850 0a 31 35 38 0d 0a 31 35 38 0d 0a 31 35 38 0d 0a  .158..158..158..
15860 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
15870 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
15880 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
15890 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
158a0 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
158b0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
158c0 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 72 30  CT DISTINCT cor0
158d0 2e 63 6f 6c 32 20 63 6f 6c 31 20 46 52 4f 4d 20  .col2 col1 FROM 
158e0 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f  tab0 AS cor0 GRO
158f0 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c  UP BY cor0.col0,
15900 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   cor0.col2..----
15910 0d 0a 32 34 0d 0a 33 38 0d 0a 37 39 0d 0a 0d 0a  ..24..38..79....
15920 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
15930 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 72 30  .SELECT ALL cor0
15940 2e 63 6f 6c 30 20 2d 20 63 6f 72 30 2e 63 6f 6c  .col0 - cor0.col
15950 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  0 AS col0 FROM t
15960 61 62 32 20 63 6f 72 30 20 47 52 4f 55 50 20 42  ab2 cor0 GROUP B
15970 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y cor0.col0..---
15980 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75  -..0..0..0....qu
15990 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
159a0 45 4c 45 43 54 20 41 4c 4c 20 2d 20 38 38 20 46  ELECT ALL - 88 F
159b0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
159c0 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
159d0 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 38 0d 0a  ol0..----..-88..
159e0 2d 38 38 0d 0a 2d 38 38 0d 0a 0d 0a 71 75 65 72  -88..-88....quer
159f0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
15a00 45 43 54 20 63 6f 72 30 2e 63 6f 6c 30 20 2a 20  ECT cor0.col0 * 
15a10 2d 20 63 6f 72 30 2e 63 6f 6c 31 20 2b 20 2b 20  - cor0.col1 + + 
15a20 33 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  30 AS col2 FROM 
15a30 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f  tab1 AS cor0 GRO
15a40 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 2c  UP BY cor0.col1,
15a50 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   cor0.col0..----
15a60 0d 0a 2d 31 30 32 0d 0a 2d 31 35 36 36 0d 0a 2d  ..-102..-1566..-
15a70 33 35 37 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20  3578....query I 
15a80 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
15a90 2d 20 33 37 20 41 53 20 63 6f 6c 30 20 46 52 4f  - 37 AS col0 FRO
15aa0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47  M tab0 AS cor0 G
15ab0 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d  ROUP BY col2..--
15ac0 2d 2d 0d 0a 2d 33 37 0d 0a 2d 33 37 0d 0a 2d 33  --..-37..-37..-3
15ad0 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  7....onlyif mysq
15ae0 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
15af0 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
15b00 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
15b10 6c 61 62 65 6c 2d 37 31 30 0d 0a 53 45 4c 45 43  label-710..SELEC
15b20 54 20 44 49 53 54 49 4e 43 54 20 2b 20 33 36 20  T DISTINCT + 36 
15b30 44 49 56 20 2d 20 4e 55 4c 4c 49 46 20 28 20 63  DIV - NULLIF ( c
15b40 6f 72 30 2e 63 6f 6c 30 2c 20 2b 20 63 6f 6c 30  or0.col0, + col0
15b50 20 2a 20 33 36 20 2b 20 2d 20 37 35 20 29 20 46   * 36 + - 75 ) F
15b60 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
15b70 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
15b80 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 30  ol0..----..-1..0
15b90 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
15ba0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
15bb0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
15bc0 72 74 20 6c 61 62 65 6c 2d 37 31 30 0d 0a 53 45  rt label-710..SE
15bd0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
15be0 33 36 20 2f 20 2d 20 4e 55 4c 4c 49 46 20 28 20  36 / - NULLIF ( 
15bf0 63 6f 72 30 2e 63 6f 6c 30 2c 20 2b 20 63 6f 6c  cor0.col0, + col
15c00 30 20 2a 20 33 36 20 2b 20 2d 20 37 35 20 29 20  0 * 36 + - 75 ) 
15c10 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
15c20 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
15c30 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a  col0..----..-1..
15c40 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  0....skipif post
15c50 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
15c60 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
15c70 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
15c80 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
15c90 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
15ca0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
15cb0 20 43 4f 41 4c 45 53 43 45 20 28 20 39 38 2c 20   COALESCE ( 98, 
15cc0 2b 20 63 6f 6c 32 2c 20 36 32 20 2b 20 63 6f 72  + col2, 62 + cor
15cd0 30 2e 63 6f 6c 32 20 29 20 63 6f 6c 31 20 46 52  0.col2 ) col1 FR
15ce0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
15cf0 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
15d00 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 39 38 0d 0a 0d 0a  l1..----..98....
15d10 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
15d20 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
15d30 20 2d 20 32 30 20 41 53 20 63 6f 6c 32 20 46 52   - 20 AS col2 FR
15d40 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
15d50 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
15d60 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 0d 0a 0d  l1..----..-20...
15d70 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
15d80 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63  ..SELECT ALL - c
15d90 6f 72 31 2e 63 6f 6c 31 20 2b 20 63 6f 72 30 2e  or1.col1 + cor0.
15da0 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f  col0 AS col1 FRO
15db0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 43  M tab1 AS cor0 C
15dc0 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 63  ROSS JOIN tab2 c
15dd0 6f 72 31 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or1 GROUP BY cor
15de0 31 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c  1.col1, cor0.col
15df0 30 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  0..----..9 value
15e00 73 20 68 61 73 68 69 6e 67 20 74 6f 20 31 38 63  s hashing to 18c
15e10 33 38 32 66 31 34 34 34 36 64 63 31 37 30 38 34  382f14446dc17084
15e20 30 62 62 63 36 32 39 34 61 33 63 35 32 0d 0a 0d  0bbc6294a3c52...
15e30 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
15e40 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
15e50 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
15e60 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
15e70 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
15e80 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
15e90 54 20 41 4c 4c 20 2d 20 28 20 2b 20 35 34 20 29  T ALL - ( + 54 )
15ea0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
15eb0 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
15ec0 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 34 0d 0a 2d  l2..----..-54..-
15ed0 35 34 0d 0a 2d 35 34 0d 0a 0d 0a 6f 6e 6c 79 69  54..-54....onlyi
15ee0 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
15ef0 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
15f00 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
15f10 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 31 35 0d  wsort label-715.
15f20 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
15f30 20 2b 20 2b 20 74 61 62 32 2e 63 6f 6c 32 20 44   + + tab2.col2 D
15f40 49 56 20 74 61 62 32 2e 63 6f 6c 32 20 41 53 20  IV tab2.col2 AS 
15f50 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 47  col1 FROM tab2 G
15f60 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
15f70 32 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 73 6b  2..----..1....sk
15f80 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
15f90 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
15fa0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
15fb0 65 6c 2d 37 31 35 0d 0a 53 45 4c 45 43 54 20 44  el-715..SELECT D
15fc0 49 53 54 49 4e 43 54 20 2b 20 2b 20 74 61 62 32  ISTINCT + + tab2
15fd0 2e 63 6f 6c 32 20 2f 20 74 61 62 32 2e 63 6f 6c  .col2 / tab2.col
15fe0 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  2 AS col1 FROM t
15ff0 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab2 GROUP BY tab
16000 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 0d  2.col2..----..1.
16010 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
16020 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
16030 4e 43 54 20 2d 20 38 34 20 2d 20 74 61 62 31 2e  NCT - 84 - tab1.
16040 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 47  col1 FROM tab1 G
16050 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
16060 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 38 0d 0a 2d  1..----..-128..-
16070 31 34 31 0d 0a 2d 39 30 0d 0a 0d 0a 6f 6e 6c 79  141..-90....only
16080 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
16090 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
160a0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
160b0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 31 37  owsort label-717
160c0 0d 0a 53 45 4c 45 43 54 20 2d 20 74 61 62 32 2e  ..SELECT - tab2.
160d0 63 6f 6c 32 20 2b 20 43 41 53 54 28 20 4e 55 4c  col2 + CAST( NUL
160e0 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53  L AS SIGNED ) AS
160f0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
16100 47 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d  GROUP BY col2..-
16110 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ---..NULL..NULL.
16120 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
16130 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
16140 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
16150 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 31  rowsort label-71
16160 37 0d 0a 53 45 4c 45 43 54 20 2d 20 74 61 62 32  7..SELECT - tab2
16170 2e 63 6f 6c 32 20 2b 20 43 41 53 54 20 28 20 4e  .col2 + CAST ( N
16180 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
16190 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
161a0 62 32 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 32  b2 GROUP BY col2
161b0 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..----..NULL..NU
161c0 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  LL..NULL....quer
161d0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
161e0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 4e  ECT DISTINCT - N
161f0 55 4c 4c 49 46 20 28 20 74 61 62 32 2e 63 6f 6c  ULLIF ( tab2.col
16200 32 2c 20 74 61 62 32 2e 63 6f 6c 32 20 2d 20 2b  2, tab2.col2 - +
16210 20 74 61 62 32 2e 63 6f 6c 32 20 29 20 41 53 20   tab2.col2 ) AS 
16220 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 47  col1 FROM tab2 G
16230 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
16240 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 38 0d 0a 2d 37  2..----..-58..-7
16250 39 0d 0a 2d 38 37 0d 0a 0d 0a 71 75 65 72 79 20  9..-87....query 
16260 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
16270 54 20 44 49 53 54 49 4e 43 54 20 2b 20 36 33 20  T DISTINCT + 63 
16280 2d 20 74 61 62 31 2e 63 6f 6c 31 20 46 52 4f 4d  - tab1.col1 FROM
16290 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74   tab1 GROUP BY t
162a0 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  ab1.col1..----..
162b0 31 39 0d 0a 35 37 0d 0a 36 0d 0a 0d 0a 71 75 65  19..57..6....que
162c0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
162d0 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20 74 61 62  LECT ALL - + tab
162e0 32 2e 63 6f 6c 32 20 2a 20 63 6f 6c 32 20 41 53  2.col2 * col2 AS
162f0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
16300 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
16310 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 33 36 34 0d  l2..----..-3364.
16320 0a 2d 36 32 34 31 0d 0a 2d 37 35 36 39 0d 0a 0d  .-6241..-7569...
16330 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
16340 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 31  ..SELECT ALL + 1
16350 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
16360 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d   BY tab2.col2..-
16370 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a  ---..1..1..1....
16380 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
16390 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
163a0 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
163b0 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
163c0 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
163d0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
163e0 20 44 49 53 54 49 4e 43 54 20 63 6f 72 30 2e 63   DISTINCT cor0.c
163f0 6f 6c 32 20 2a 20 2d 20 32 39 20 63 6f 6c 31 20  ol2 * - 29 col1 
16400 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
16410 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
16420 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 30  col2..----..-130
16430 35 0d 0a 2d 32 30 35 39 0d 0a 2d 32 33 32 0d 0a  5..-2059..-232..
16440 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
16450 74 0d 0a 53 45 4c 45 43 54 20 2d 20 39 34 20 46  t..SELECT - 94 F
16460 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
16470 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
16480 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 34 0d 0a  ol2..----..-94..
16490 2d 39 34 0d 0a 2d 39 34 0d 0a 0d 0a 71 75 65 72  -94..-94....quer
164a0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
164b0 45 43 54 20 2d 20 2b 20 33 32 20 46 52 4f 4d 20  ECT - + 32 FROM 
164c0 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
164d0 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  b1.col2..----..-
164e0 33 32 0d 0a 2d 33 32 0d 0a 2d 33 32 0d 0a 0d 0a  32..-32..-32....
164f0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
16500 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20  .SELECT ALL - + 
16510 39 37 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f  97 FROM tab2 GRO
16520 55 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d  UP BY col0..----
16530 0d 0a 2d 39 37 0d 0a 2d 39 37 0d 0a 2d 39 37 0d  ..-97..-97..-97.
16540 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
16550 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 74 61 62  rt..SELECT - tab
16560 30 2e 63 6f 6c 30 20 2a 20 32 31 20 41 53 20 63  0.col0 * 21 AS c
16570 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol2 FROM tab0 GR
16580 4f 55 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d  OUP BY col0..---
16590 2d 0d 0a 2d 31 37 34 33 0d 0a 2d 35 34 36 0d 0a  -..-1743..-546..
165a0 2d 39 30 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -903....query I 
165b0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
165c0 33 30 20 2a 20 2b 20 74 61 62 32 2e 63 6f 6c 32  30 * + tab2.col2
165d0 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
165e0 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d   BY tab2.col2..-
165f0 2d 2d 2d 0d 0a 31 37 34 30 0d 0a 32 33 37 30 0d  ---..1740..2370.
16600 0a 32 36 31 30 0d 0a 0d 0a 71 75 65 72 79 20 49  .2610....query I
16610 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
16620 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 72 30   DISTINCT + cor0
16630 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52  .col1 AS col1 FR
16640 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 47 52 4f  OM tab2 cor0 GRO
16650 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d  UP BY cor0.col1.
16660 0a 2d 2d 2d 2d 0d 0a 34 31 0d 0a 35 39 0d 0a 36  .----..41..59..6
16670 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  1....skipif post
16680 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
16690 53 51 4c 20 68 61 73 20 73 74 72 69 63 74 20 63  SQL has strict c
166a0 6f 6c 75 6d 6e 20 75 73 61 67 65 20 66 6f 72 20  olumn usage for 
166b0 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73 65 73  GROUP BY clauses
166c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
166d0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
166e0 43 54 20 37 33 20 2a 20 43 4f 41 4c 45 53 43 45  CT 73 * COALESCE
166f0 20 28 20 38 32 2c 20 63 6f 72 30 2e 63 6f 6c 30   ( 82, cor0.col0
16700 20 2d 20 2d 20 43 41 53 45 20 63 6f 72 30 2e 63   - - CASE cor0.c
16710 6f 6c 31 20 57 48 45 4e 20 2d 20 63 6f 6c 32 20  ol1 WHEN - col2 
16720 2f 20 2b 20 43 41 53 45 20 63 6f 72 30 2e 63 6f  / + CASE cor0.co
16730 6c 32 20 57 48 45 4e 20 2b 20 36 36 20 2a 20 2d  l2 WHEN + 66 * -
16740 20 63 6f 72 30 2e 63 6f 6c 32 20 54 48 45 4e 20   cor0.col2 THEN 
16750 4e 55 4c 4c 20 57 48 45 4e 20 43 4f 41 4c 45 53  NULL WHEN COALES
16760 43 45 20 28 20 2b 20 63 6f 72 30 2e 63 6f 6c 31  CE ( + cor0.col1
16770 2c 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 2b 20  , + cor0.col1 + 
16780 63 6f 72 30 2e 63 6f 6c 31 20 2a 20 2d 20 63 6f  cor0.col1 * - co
16790 72 30 2e 63 6f 6c 30 2c 20 2d 20 63 6f 72 30 2e  r0.col0, - cor0.
167a0 63 6f 6c 32 20 2a 20 63 6f 6c 32 20 29 20 54 48  col2 * col2 ) TH
167b0 45 4e 20 63 6f 72 30 2e 63 6f 6c 31 20 45 4e 44  EN cor0.col1 END
167c0 20 54 48 45 4e 20 2d 20 63 6f 72 30 2e 63 6f 6c   THEN - cor0.col
167d0 30 20 2b 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20  0 + + cor0.col1 
167e0 45 4c 53 45 20 2b 20 63 6f 72 30 2e 63 6f 6c 30  ELSE + cor0.col0
167f0 20 45 4e 44 20 2a 20 2d 20 63 6f 72 30 2e 63 6f   END * - cor0.co
16800 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41  l0 ) FROM tab0 A
16810 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
16820 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  cor0.col2..----.
16830 0a 35 39 38 36 0d 0a 0d 0a 71 75 65 72 79 20 49  .5986....query I
16840 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
16850 20 44 49 53 54 49 4e 43 54 20 2b 20 32 34 20 41   DISTINCT + 24 A
16860 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
16870 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
16880 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y cor0.col2..---
16890 2d 0d 0a 32 34 0d 0a 0d 0a 71 75 65 72 79 20 49  -..24....query I
168a0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
168b0 20 41 4c 4c 20 2b 20 74 61 62 32 2e 63 6f 6c 31   ALL + tab2.col1
168c0 20 2b 20 2d 20 74 61 62 32 2e 63 6f 6c 31 20 46   + - tab2.col1 F
168d0 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42  ROM tab2 GROUP B
168e0 59 20 74 61 62 32 2e 63 6f 6c 31 20 48 41 56 49  Y tab2.col1 HAVI
168f0 4e 47 20 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e  NG ( NULL ) IS N
16900 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d  ULL..----..0..0.
16910 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  .0....onlyif mys
16920 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
16930 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
16940 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
16950 20 6c 61 62 65 6c 2d 37 33 32 0d 0a 53 45 4c 45   label-732..SELE
16960 43 54 20 2b 20 63 6f 6c 30 20 44 49 56 20 63 6f  CT + col0 DIV co
16970 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
16980 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
16990 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31  r0.col0..----..1
169a0 0d 0a 31 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66  ..1..1....skipif
169b0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
169c0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
169d0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
169e0 33 32 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c  32..SELECT + col
169f0 30 20 2f 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  0 / col0 FROM ta
16a00 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
16a10 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d   BY cor0.col0..-
16a20 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a  ---..1..1..1....
16a30 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
16a40 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
16a50 20 74 61 62 31 2e 63 6f 6c 31 20 2b 20 74 61 62   tab1.col1 + tab
16a60 31 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46  1.col1 AS col1 F
16a70 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
16a80 59 20 74 61 62 31 2e 63 6f 6c 31 20 48 41 56 49  Y tab1.col1 HAVI
16a90 4e 47 20 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e  NG ( NULL ) IS N
16aa0 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  OT NULL..----...
16ab0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
16ac0 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20 41 53  ..SELECT col1 AS
16ad0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
16ae0 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
16af0 72 30 2e 63 6f 6c 31 20 48 41 56 49 4e 47 20 4e  r0.col1 HAVING N
16b00 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ULL IS NOT NULL.
16b10 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
16b20 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
16b30 20 2b 20 2d 20 31 20 41 53 20 63 6f 6c 31 20 46   + - 1 AS col1 F
16b40 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
16b50 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y tab1.col1..---
16b60 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d  -..-1..-1..-1...
16b70 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
16b80 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 37 36 20  ..SELECT - + 76 
16b90 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
16ba0 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d  BY tab0.col2..--
16bb0 2d 2d 0d 0a 2d 37 36 0d 0a 2d 37 36 0d 0a 2d 37  --..-76..-76..-7
16bc0 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
16bd0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
16be0 54 49 4e 43 54 20 31 39 20 41 53 20 63 6f 6c 30  TINCT 19 AS col0
16bf0 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50   FROM tab1 GROUP
16c00 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d   BY tab1.col2..-
16c10 2d 2d 2d 0d 0a 31 39 0d 0a 0d 0a 6f 6e 6c 79 69  ---..19....onlyi
16c20 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
16c30 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
16c40 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
16c50 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 33 38 0d  wsort label-738.
16c60 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 41 4c  .SELECT ALL COAL
16c70 45 53 43 45 20 28 20 39 38 2c 20 2d 20 63 6f 6c  ESCE ( 98, - col
16c80 30 20 2b 20 2d 20 63 6f 72 30 2e 63 6f 6c 32 20  0 + - cor0.col2 
16c90 44 49 56 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20  DIV + cor0.col1 
16ca0 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  ) FROM tab2 AS c
16cb0 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
16cc0 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c  0.col1, cor0.col
16cd0 31 0d 0a 2d 2d 2d 2d 0d 0a 39 38 0d 0a 39 38 0d  1..----..98..98.
16ce0 0a 39 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .98....skipif my
16cf0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
16d00 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73  ible..skipif pos
16d10 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
16d20 65 53 51 4c 20 68 61 73 20 73 74 72 69 63 74 20  eSQL has strict 
16d30 63 6f 6c 75 6d 6e 20 75 73 61 67 65 20 66 6f 72  column usage for
16d40 20 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73 65   GROUP BY clause
16d50 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
16d60 72 74 20 6c 61 62 65 6c 2d 37 33 38 0d 0a 53 45  rt label-738..SE
16d70 4c 45 43 54 20 41 4c 4c 20 43 4f 41 4c 45 53 43  LECT ALL COALESC
16d80 45 20 28 20 39 38 2c 20 2d 20 63 6f 6c 30 20 2b  E ( 98, - col0 +
16d90 20 2d 20 63 6f 72 30 2e 63 6f 6c 32 20 2f 20 2b   - cor0.col2 / +
16da0 20 63 6f 72 30 2e 63 6f 6c 31 20 29 20 46 52 4f   cor0.col1 ) FRO
16db0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
16dc0 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
16dd0 31 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d  1, cor0.col1..--
16de0 2d 2d 0d 0a 39 38 0d 0a 39 38 0d 0a 39 38 0d 0a  --..98..98..98..
16df0 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
16e00 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
16e10 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
16e20 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
16e30 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
16e40 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
16e50 43 54 20 74 61 62 32 2e 63 6f 6c 31 20 63 6f 6c  CT tab2.col1 col
16e60 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  0 FROM tab2 GROU
16e70 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a  P BY tab2.col1..
16e80 2d 2d 2d 2d 0d 0a 34 31 0d 0a 35 39 0d 0a 36 31  ----..41..59..61
16e90 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
16ea0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
16eb0 49 4e 43 54 20 2d 20 74 61 62 31 2e 63 6f 6c 31  INCT - tab1.col1
16ec0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
16ed0 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31  b1 GROUP BY tab1
16ee0 2e 63 6f 6c 31 20 48 41 56 49 4e 47 20 4e 4f 54  .col1 HAVING NOT
16ef0 20 4e 55 4c 4c 20 42 45 54 57 45 45 4e 20 28 20   NULL BETWEEN ( 
16f00 4e 55 4c 4c 20 29 20 41 4e 44 20 4e 55 4c 4c 0d  NULL ) AND NULL.
16f10 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20  .----....skipif 
16f20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
16f30 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
16f40 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
16f50 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
16f60 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
16f70 74 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e 63  t..SELECT cor0.c
16f80 6f 6c 32 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  ol2 col2 FROM ta
16f90 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
16fa0 20 42 59 20 63 6f 6c 32 2c 20 63 6f 6c 30 0d 0a   BY col2, col0..
16fb0 2d 2d 2d 2d 0d 0a 32 34 0d 0a 33 38 0d 0a 37 39  ----..24..38..79
16fc0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
16fd0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  ort..SELECT + co
16fe0 6c 32 20 2b 20 2b 20 63 6f 72 30 2e 63 6f 6c 32  l2 + + cor0.col2
16ff0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
17000 62 32 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  b2 cor0 GROUP BY
17010 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 31 36   col2..----..116
17020 0d 0a 31 35 38 0d 0a 31 37 34 0d 0a 0d 0a 71 75  ..158..174....qu
17030 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
17040 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
17050 20 63 6f 72 30 2e 63 6f 6c 31 20 41 53 20 63 6f   cor0.col1 AS co
17060 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l0 FROM tab2 AS 
17070 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
17080 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f  r0.col1, cor0.co
17090 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 31 0d 0a 2d  l0..----..-41..-
170a0 35 39 0d 0a 2d 36 31 0d 0a 0d 0a 73 6b 69 70 69  59..-61....skipi
170b0 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
170c0 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
170d0 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
170e0 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
170f0 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
17100 6f 72 74 0d 0a 53 45 4c 45 43 54 20 38 38 20 63  ort..SELECT 88 c
17110 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol0 FROM tab1 GR
17120 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32  OUP BY tab1.col2
17130 0d 0a 2d 2d 2d 2d 0d 0a 38 38 0d 0a 38 38 0d 0a  ..----..88..88..
17140 38 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  88....query I ro
17150 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
17160 74 61 62 30 2e 63 6f 6c 30 20 2a 20 74 61 62 30  tab0.col0 * tab0
17170 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20  .col0 FROM tab0 
17180 47 52 4f 55 50 20 42 59 20 63 6f 6c 30 0d 0a 2d  GROUP BY col0..-
17190 2d 2d 2d 0d 0a 31 38 34 39 0d 0a 36 37 36 0d 0a  ---..1849..676..
171a0 36 38 38 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20  6889....query I 
171b0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
171c0 2b 20 74 61 62 32 2e 63 6f 6c 32 20 2d 20 28 20  + tab2.col2 - ( 
171d0 35 30 20 2b 20 74 61 62 32 2e 63 6f 6c 32 20 29  50 + tab2.col2 )
171e0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
171f0 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32  b2 GROUP BY tab2
17200 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 30  .col2..----..-50
17210 0d 0a 2d 35 30 0d 0a 2d 35 30 0d 0a 0d 0a 71 75  ..-50..-50....qu
17220 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
17230 45 4c 45 43 54 20 37 20 2a 20 2d 20 63 6f 72 30  ELECT 7 * - cor0
17240 2e 63 6f 6c 32 20 2d 20 2d 20 63 6f 72 30 2e 63  .col2 - - cor0.c
17250 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol2 FROM tab2 AS
17260 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
17270 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a  ol0, cor0.col2..
17280 2d 2d 2d 2d 0d 0a 2d 33 34 38 0d 0a 2d 34 37 34  ----..-348..-474
17290 0d 0a 2d 35 32 32 0d 0a 0d 0a 71 75 65 72 79 20  ..-522....query 
172a0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
172b0 54 20 41 4c 4c 20 2d 20 32 39 20 2b 20 2d 20 63  T ALL - 29 + - c
172c0 6f 72 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61  or0.col2 FROM ta
172d0 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b1 AS cor0 GROUP
172e0 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d   BY cor0.col2..-
172f0 2d 2d 2d 0d 0a 2d 31 30 30 0d 0a 2d 33 37 0d 0a  ---..-100..-37..
17300 2d 37 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -74....query I r
17310 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
17320 4c 4c 20 2d 20 63 6f 72 30 2e 63 6f 6c 32 20 2a  LL - cor0.col2 *
17330 20 2b 20 32 31 20 41 53 20 63 6f 6c 31 20 46 52   + 21 AS col1 FR
17340 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
17350 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
17360 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 31 38 0d  l2..----..-1218.
17370 0a 2d 31 36 35 39 0d 0a 2d 31 38 32 37 0d 0a 0d  .-1659..-1827...
17380 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
17390 0d 0a 53 45 4c 45 43 54 20 38 37 20 41 53 20 63  ..SELECT 87 AS c
173a0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
173b0 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
173c0 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 38 37 0d 0a 38  ol1..----..87..8
173d0 37 0d 0a 38 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  7..87....onlyif 
173e0 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
173f0 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
17400 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
17410 6f 72 74 20 6c 61 62 65 6c 2d 37 35 31 0d 0a 53  ort label-751..S
17420 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
17430 20 74 61 62 31 2e 63 6f 6c 31 20 44 49 56 20 74   tab1.col1 DIV t
17440 61 62 31 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 32  ab1.col1 AS col2
17450 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50   FROM tab1 GROUP
17460 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d   BY tab1.col1..-
17470 2d 2d 2d 0d 0a 2d 31 0d 0a 0d 0a 73 6b 69 70 69  ---..-1....skipi
17480 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
17490 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
174a0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
174b0 37 35 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  751..SELECT DIST
174c0 49 4e 43 54 20 2d 20 74 61 62 31 2e 63 6f 6c 31  INCT - tab1.col1
174d0 20 2f 20 74 61 62 31 2e 63 6f 6c 31 20 41 53 20   / tab1.col1 AS 
174e0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47  col2 FROM tab1 G
174f0 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
17500 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 0d 0a 71  1..----..-1....q
17510 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
17520 53 45 4c 45 43 54 20 33 39 20 46 52 4f 4d 20 74  SELECT 39 FROM t
17530 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab1 AS cor0 GROU
17540 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a  P BY cor0.col1..
17550 2d 2d 2d 2d 0d 0a 33 39 0d 0a 33 39 0d 0a 33 39  ----..39..39..39
17560 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
17570 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
17580 63 6f 72 30 2e 63 6f 6c 30 20 2a 20 2d 20 63 6f  cor0.col0 * - co
17590 72 30 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20  r0.col0 AS col1 
175a0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
175b0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
175c0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 38 34  col0..----..-484
175d0 0d 0a 2d 36 37 32 34 0d 0a 2d 37 38 34 0d 0a 0d  ..-6724..-784...
175e0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
175f0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
17600 54 20 2d 20 34 30 20 46 52 4f 4d 20 74 61 62 31  T - 40 FROM tab1
17610 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
17620 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72  Y cor0.col1, cor
17630 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34  0.col2..----..-4
17640 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
17650 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
17660 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
17670 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
17680 6c 61 62 65 6c 2d 37 35 35 0d 0a 53 45 4c 45 43  label-755..SELEC
17690 54 20 43 41 53 54 28 20 63 6f 6c 31 20 41 53 20  T CAST( col1 AS 
176a0 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 31  SIGNED ) AS col1
176b0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
176c0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31  r0 GROUP BY col1
176d0 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  , cor0.col1..---
176e0 2d 0d 0a 34 34 0d 0a 35 37 0d 0a 36 0d 0a 0d 0a  -..44..57..6....
176f0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
17700 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
17710 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
17720 61 62 65 6c 2d 37 35 35 0d 0a 53 45 4c 45 43 54  abel-755..SELECT
17730 20 43 41 53 54 20 28 20 63 6f 6c 31 20 41 53 20   CAST ( col1 AS 
17740 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c  INTEGER ) AS col
17750 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  1 FROM tab1 AS c
17760 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c  or0 GROUP BY col
17770 31 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d  1, cor0.col1..--
17780 2d 2d 0d 0a 34 34 0d 0a 35 37 0d 0a 36 0d 0a 0d  --..44..57..6...
17790 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
177a0 0d 0a 53 45 4c 45 43 54 20 2b 20 36 31 20 41 53  ..SELECT + 61 AS
177b0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
177c0 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
177d0 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30   cor0.col0, cor0
177e0 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 36 31 0d  .col0..----..61.
177f0 0a 36 31 0d 0a 36 31 0d 0a 0d 0a 73 6b 69 70 69  .61..61....skipi
17800 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
17810 6f 73 74 67 72 65 53 51 4c 20 68 61 73 20 73 74  ostgreSQL has st
17820 72 69 63 74 20 63 6f 6c 75 6d 6e 20 75 73 61 67  rict column usag
17830 65 20 66 6f 72 20 47 52 4f 55 50 20 42 59 20 63  e for GROUP BY c
17840 6c 61 75 73 65 73 0d 0a 71 75 65 72 79 20 49 20  lauses..query I 
17850 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
17860 2d 20 43 4f 41 4c 45 53 43 45 20 28 20 2d 20 33  - COALESCE ( - 3
17870 31 2c 20 63 6f 72 30 2e 63 6f 6c 32 2c 20 28 20  1, cor0.col2, ( 
17880 33 36 20 29 2c 20 63 6f 72 30 2e 63 6f 6c 31 20  36 ), cor0.col1 
17890 29 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30  ) FROM tab0 cor0
178a0 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
178b0 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a  ol0, cor0.col1..
178c0 2d 2d 2d 2d 0d 0a 33 31 0d 0a 33 31 0d 0a 33 31  ----..31..31..31
178d0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
178e0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
178f0 2d 20 39 34 20 46 52 4f 4d 20 74 61 62 30 20 47  - 94 FROM tab0 G
17900 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c  ROUP BY tab0.col
17910 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 34 0d 0a 2d 39  2..----..-94..-9
17920 34 0d 0a 2d 39 34 0d 0a 0d 0a 71 75 65 72 79 20  4..-94....query 
17930 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
17940 54 20 44 49 53 54 49 4e 43 54 20 2d 20 38 37 20  T DISTINCT - 87 
17950 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
17960 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab2.col1..--
17970 2d 2d 0d 0a 2d 38 37 0d 0a 0d 0a 71 75 65 72 79  --..-87....query
17980 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
17990 43 54 20 35 20 2a 20 32 38 20 46 52 4f 4d 20 74  CT 5 * 28 FROM t
179a0 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab1 AS cor0 GROU
179b0 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a  P BY cor0.col2..
179c0 2d 2d 2d 2d 0d 0a 31 34 30 0d 0a 31 34 30 0d 0a  ----..140..140..
179d0 31 34 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  140....query I r
179e0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 32  owsort..SELECT 2
179f0 31 20 2a 20 2d 20 74 61 62 32 2e 63 6f 6c 31 20  1 * - tab2.col1 
17a00 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
17a10 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
17a20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 33  col1..----..-123
17a30 39 0d 0a 2d 31 32 38 31 0d 0a 2d 38 36 31 0d 0a  9..-1281..-861..
17a40 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
17a50 74 0d 0a 53 45 4c 45 43 54 20 74 61 62 31 2e 63  t..SELECT tab1.c
17a60 6f 6c 30 20 2b 20 2d 20 74 61 62 31 2e 63 6f 6c  ol0 + - tab1.col
17a70 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  0 FROM tab1 GROU
17a80 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a  P BY tab1.col0..
17a90 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d  ----..0..0..0...
17aa0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
17ab0 0d 0a 53 45 4c 45 43 54 20 34 35 20 2a 20 63 6f  ..SELECT 45 * co
17ac0 72 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20  r0.col2 AS col1 
17ad0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
17ae0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
17af0 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32 30 32 35  col2..----..2025
17b00 0d 0a 33 31 39 35 0d 0a 33 36 30 0d 0a 0d 0a 71  ..3195..360....q
17b10 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
17b20 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
17b30 74 61 62 32 2e 63 6f 6c 30 20 2a 20 2b 20 74 61  tab2.col0 * + ta
17b40 62 32 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  b2.col0 FROM tab
17b50 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
17b60 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32 35 0d  col0..----..225.
17b70 0a 38 32 38 31 0d 0a 38 34 36 34 0d 0a 0d 0a 73  .8281..8464....s
17b80 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
17b90 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
17ba0 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
17bb0 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
17bc0 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
17bd0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
17be0 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20  DISTINCT - col0 
17bf0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41  col2 FROM tab0 A
17c00 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
17c10 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor0.col0..----.
17c20 0a 2d 32 36 0d 0a 2d 34 33 0d 0a 2d 38 33 0d 0a  .-26..-43..-83..
17c30 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
17c40 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 28 20  t..SELECT + + ( 
17c50 2d 20 39 39 20 29 20 46 52 4f 4d 20 74 61 62 31  - 99 ) FROM tab1
17c60 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
17c70 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 39 0d 0a  ol1..----..-99..
17c80 2d 39 39 0d 0a 2d 39 39 0d 0a 0d 0a 71 75 65 72  -99..-99....quer
17c90 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
17ca0 45 43 54 20 41 4c 4c 20 2b 20 2b 20 74 61 62 31  ECT ALL + + tab1
17cb0 2e 63 6f 6c 31 20 2a 20 63 6f 6c 31 20 2b 20 2b  .col1 * col1 + +
17cc0 20 37 37 20 46 52 4f 4d 20 74 61 62 31 20 47 52   77 FROM tab1 GR
17cd0 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31  OUP BY tab1.col1
17ce0 0d 0a 2d 2d 2d 2d 0d 0a 31 31 33 0d 0a 32 30 31  ..----..113..201
17cf0 33 0d 0a 33 33 32 36 0d 0a 0d 0a 71 75 65 72 79  3..3326....query
17d00 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
17d10 43 54 20 63 6f 6c 31 20 2d 20 36 38 20 46 52 4f  CT col1 - 68 FRO
17d20 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
17d30 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab0.col1..----.
17d40 0a 2d 36 38 0d 0a 31 33 0d 0a 0d 0a 71 75 65 72  .-68..13....quer
17d50 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
17d60 45 43 54 20 41 4c 4c 20 63 6f 72 30 2e 63 6f 6c  ECT ALL cor0.col
17d70 32 20 2a 20 2d 20 63 6f 72 30 2e 63 6f 6c 30 20  2 * - cor0.col0 
17d80 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
17d90 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
17da0 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d  col0, cor0.col2.
17db0 0a 2d 2d 2d 2d 0d 0a 2d 31 32 36 30 0d 0a 2d 31  .----..-1260..-1
17dc0 37 36 0d 0a 2d 35 38 32 32 0d 0a 0d 0a 71 75 65  76..-5822....que
17dd0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
17de0 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20 36 30 20  LECT ALL - - 60 
17df0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
17e00 31 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d  1 GROUP BY col2.
17e10 0a 2d 2d 2d 2d 0d 0a 36 30 0d 0a 36 30 0d 0a 36  .----..60..60..6
17e20 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  0....skipif post
17e30 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
17e40 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
17e50 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
17e60 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
17e70 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
17e80 45 4c 45 43 54 20 2b 20 2b 20 74 61 62 30 2e 63  ELECT + + tab0.c
17e90 6f 6c 31 20 2b 20 32 39 20 63 6f 6c 30 20 46 52  ol1 + 29 col0 FR
17ea0 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59  OM tab0 GROUP BY
17eb0 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   tab0.col1..----
17ec0 0d 0a 31 31 30 0d 0a 32 39 0d 0a 0d 0a 71 75 65  ..110..29....que
17ed0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
17ee0 4c 45 43 54 20 41 4c 4c 20 2b 20 34 35 20 41 53  LECT ALL + 45 AS
17ef0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
17f00 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
17f10 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 34 35 0d 0a 34 35  l0..----..45..45
17f20 0d 0a 34 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  ..45....skipif p
17f30 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
17f40 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
17f50 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
17f60 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
17f70 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
17f80 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 31 31 20  ..SELECT + - 11 
17f90 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 47  col1 FROM tab2 G
17fa0 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d  ROUP BY col2..--
17fb0 2d 2d 0d 0a 2d 31 31 0d 0a 2d 31 31 0d 0a 2d 31  --..-11..-11..-1
17fc0 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
17fd0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63  sort..SELECT + c
17fe0 6f 72 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 31  or0.col2 AS col1
17ff0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
18000 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
18010 2e 63 6f 6c 32 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d  .col2, col1..---
18020 2d 0d 0a 35 38 0d 0a 37 39 0d 0a 38 37 0d 0a 0d  -..58..79..87...
18030 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
18040 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 34  ..SELECT ALL - 4
18050 30 20 2b 20 2b 20 63 6f 72 30 2e 63 6f 6c 32 20  0 + + cor0.col2 
18060 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
18070 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
18080 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d  BY cor0.col2..--
18090 2d 2d 0d 0a 2d 33 32 0d 0a 33 31 0d 0a 35 0d 0a  --..-32..31..5..
180a0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
180b0 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 63 6f  t..SELECT - + co
180c0 6c 30 20 2b 20 74 61 62 32 2e 63 6f 6c 30 20 41  l0 + tab2.col0 A
180d0 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
180e0 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63   GROUP BY tab2.c
180f0 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d  ol0..----..0..0.
18100 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  .0....query I ro
18110 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
18120 2d 20 74 61 62 30 2e 63 6f 6c 32 20 2b 20 2d 20  - tab0.col2 + - 
18130 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47  col2 FROM tab0 G
18140 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c  ROUP BY tab0.col
18150 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 38 0d 0a 2d  2..----..-158..-
18160 34 38 0d 0a 2d 37 36 0d 0a 0d 0a 71 75 65 72 79  48..-76....query
18170 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
18180 43 54 20 36 30 20 41 53 20 63 6f 6c 31 20 46 52  CT 60 AS col1 FR
18190 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
181a0 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
181b0 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 36 30 0d 0a 36 30  l0..----..60..60
181c0 0d 0a 36 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..60....query I 
181d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
181e0 2b 20 74 61 62 31 2e 63 6f 6c 30 20 2b 20 2b 20  + tab1.col0 + + 
181f0 33 35 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  35 AS col2 FROM 
18200 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
18210 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31  b1.col0..----..1
18220 31 37 0d 0a 35 37 0d 0a 36 33 0d 0a 0d 0a 73 6b  17..57..63....sk
18230 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
18240 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
18250 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
18260 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
18270 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
18280 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
18290 4c 4c 20 2b 20 38 20 2a 20 34 38 20 63 6f 6c 32  LL + 8 * 48 col2
182a0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
182b0 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
182c0 62 31 20 41 53 20 63 6f 72 31 20 47 52 4f 55 50  b1 AS cor1 GROUP
182d0 20 42 59 20 63 6f 72 31 2e 63 6f 6c 32 0d 0a 2d   BY cor1.col2..-
182e0 2d 2d 2d 0d 0a 33 38 34 0d 0a 33 38 34 0d 0a 33  ---..384..384..3
182f0 38 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  84....query I ro
18300 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
18310 2b 20 74 61 62 30 2e 63 6f 6c 32 20 41 53 20 63  + tab0.col2 AS c
18320 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol1 FROM tab0 GR
18330 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32  OUP BY tab0.col2
18340 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 0d 0a 2d 33 38  ..----..-24..-38
18350 0d 0a 2d 37 39 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-79....query I
18360 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
18370 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20 41   DISTINCT col1 A
18380 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
18390 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
183a0 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 31 0d 0a 35  ol1..----..41..5
183b0 39 0d 0a 36 31 0d 0a 0d 0a 71 75 65 72 79 20 49  9..61....query I
183c0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
183d0 20 38 34 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   84 AS col1 FROM
183e0 20 74 61 62 32 20 63 6f 72 30 20 47 52 4f 55 50   tab2 cor0 GROUP
183f0 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d   BY cor0.col2..-
18400 2d 2d 2d 0d 0a 38 34 0d 0a 38 34 0d 0a 38 34 0d  ---..84..84..84.
18410 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
18420 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
18430 4e 43 54 20 2d 20 31 36 20 41 53 20 63 6f 6c 32  NCT - 16 AS col2
18440 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
18450 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
18460 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36  .col2..----..-16
18470 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
18480 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
18490 49 4e 43 54 20 2d 20 63 6f 72 30 2e 63 6f 6c 30  INCT - cor0.col0
184a0 20 2a 20 38 30 20 2d 20 2b 20 63 6f 6c 32 20 41   * 80 - + col2 A
184b0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
184c0 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
184d0 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63  or0.col0, cor0.c
184e0 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 31 35 39  ol2..----..-2159
184f0 0d 0a 2d 33 34 36 34 0d 0a 2d 36 36 37 38 0d 0a  ..-3464..-6678..
18500 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
18510 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
18520 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
18530 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
18540 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
18550 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
18560 43 54 20 41 4c 4c 20 39 37 20 63 6f 6c 31 20 46  CT ALL 97 col1 F
18570 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42  ROM tab2 GROUP B
18580 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab2.col2..---
18590 2d 0d 0a 39 37 0d 0a 39 37 0d 0a 39 37 0d 0a 0d  -..97..97..97...
185a0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
185b0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2b  ..SELECT ALL + +
185c0 20 31 33 20 2d 20 74 61 62 30 2e 63 6f 6c 32 20   13 - tab0.col2 
185d0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
185e0 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
185f0 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 0d  col2..----..-11.
18600 0a 2d 32 35 0d 0a 2d 36 36 0d 0a 0d 0a 71 75 65  .-25..-66....que
18610 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
18620 4c 45 43 54 20 31 34 20 41 53 20 63 6f 6c 31 20  LECT 14 AS col1 
18630 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20 47  FROM tab0 cor0 G
18640 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
18650 31 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 31 34 0d  1..----..14..14.
18660 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
18670 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  rt..SELECT ALL +
18680 20 31 32 20 46 52 4f 4d 20 74 61 62 31 20 47 52   12 FROM tab1 GR
18690 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31  OUP BY tab1.col1
186a0 0d 0a 2d 2d 2d 2d 0d 0a 31 32 0d 0a 31 32 0d 0a  ..----..12..12..
186b0 31 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  12....query I ro
186c0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
186d0 72 30 2e 63 6f 6c 31 20 2b 20 2d 20 30 20 2a 20  r0.col1 + - 0 * 
186e0 34 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  4 FROM tab2 AS c
186f0 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
18700 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 31  0.col1..----..41
18710 0d 0a 35 39 0d 0a 36 31 0d 0a 0d 0a 71 75 65 72  ..59..61....quer
18720 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
18730 45 43 54 20 36 33 20 2a 20 74 61 62 31 2e 63 6f  ECT 63 * tab1.co
18740 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f  l2 FROM tab1 GRO
18750 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d  UP BY tab1.col2.
18760 0a 2d 2d 2d 2d 0d 0a 32 38 33 35 0d 0a 34 34 37  .----..2835..447
18770 33 0d 0a 35 30 34 0d 0a 0d 0a 71 75 65 72 79 20  3..504....query 
18780 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
18790 54 20 2b 20 33 31 20 41 53 20 63 6f 6c 31 20 46  T + 31 AS col1 F
187a0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
187b0 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
187c0 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 33 31 0d 0a 33  ol0..----..31..3
187d0 31 0d 0a 33 31 0d 0a 0d 0a 71 75 65 72 79 20 49  1..31....query I
187e0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
187f0 20 41 4c 4c 20 2b 20 63 6f 72 30 2e 63 6f 6c 31   ALL + cor0.col1
18800 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
18810 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
18820 62 32 20 41 53 20 63 6f 72 31 20 47 52 4f 55 50  b2 AS cor1 GROUP
18830 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63   BY cor0.col1, c
18840 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  or0.col2..----..
18850 34 31 0d 0a 35 39 0d 0a 36 31 0d 0a 0d 0a 71 75  41..59..61....qu
18860 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
18870 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
18880 6f 72 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61  or0.col2 FROM ta
18890 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b1 AS cor0 GROUP
188a0 20 42 59 20 63 6f 6c 30 2c 20 63 6f 72 30 2e 63   BY col0, cor0.c
188b0 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 34 35 0d 0a 37  ol2..----..45..7
188c0 31 0d 0a 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20  1..8....query I 
188d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
188e0 36 37 20 2a 20 74 61 62 30 2e 63 6f 6c 30 20 41  67 * tab0.col0 A
188f0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
18900 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
18910 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 37 34 32 0d  ol0..----..1742.
18920 0a 32 38 38 31 0d 0a 35 35 36 31 0d 0a 0d 0a 71  .2881..5561....q
18930 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
18940 53 45 4c 45 43 54 20 2b 20 74 61 62 31 2e 63 6f  SELECT + tab1.co
18950 6c 30 20 2a 20 2d 20 74 61 62 31 2e 63 6f 6c 30  l0 * - tab1.col0
18960 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50   FROM tab1 GROUP
18970 20 42 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d   BY tab1.col0..-
18980 2d 2d 2d 0d 0a 2d 34 38 34 0d 0a 2d 36 37 32 34  ---..-484..-6724
18990 0d 0a 2d 37 38 34 0d 0a 0d 0a 71 75 65 72 79 20  ..-784....query 
189a0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
189b0 54 20 41 4c 4c 20 2b 20 74 61 62 32 2e 63 6f 6c  T ALL + tab2.col
189c0 31 20 2a 20 2b 20 33 36 20 41 53 20 63 6f 6c 31  1 * + 36 AS col1
189d0 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
189e0 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d   BY tab2.col1..-
189f0 2d 2d 2d 0d 0a 31 34 37 36 0d 0a 32 31 32 34 0d  ---..1476..2124.
18a00 0a 32 31 39 36 0d 0a 0d 0a 71 75 65 72 79 20 49  .2196....query I
18a10 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
18a20 20 32 32 20 2a 20 34 34 20 46 52 4f 4d 20 74 61   22 * 44 FROM ta
18a30 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b1 AS cor0 GROUP
18a40 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d   BY cor0.col0..-
18a50 2d 2d 2d 0d 0a 39 36 38 0d 0a 39 36 38 0d 0a 39  ---..968..968..9
18a60 36 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  68....query I ro
18a70 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 36 36  wsort..SELECT 66
18a80 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20   FROM tab0 cor0 
18a90 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
18aa0 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 36 36 0d 0a 36 36  l0..----..66..66
18ab0 0d 0a 36 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..66....query I 
18ac0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
18ad0 41 4c 4c 20 2d 20 28 20 36 35 20 29 20 41 53 20  ALL - ( 65 ) AS 
18ae0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
18af0 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
18b00 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  cor0.col1..----.
18b10 0a 2d 36 35 0d 0a 2d 36 35 0d 0a 2d 36 35 0d 0a  .-65..-65..-65..
18b20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
18b30 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 72 30  t..SELECT + cor0
18b40 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20  .col0 FROM tab1 
18b50 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
18b60 20 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 30   col1, cor0.col0
18b70 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32 38 0d 0a  ..----..22..28..
18b80 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  82....query I ro
18b90 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
18ba0 4c 20 31 36 20 41 53 20 63 6f 6c 30 20 46 52 4f  L 16 AS col0 FRO
18bb0 4d 20 74 61 62 32 20 63 6f 72 30 20 47 52 4f 55  M tab2 cor0 GROU
18bc0 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a  P BY cor0.col1..
18bd0 2d 2d 2d 2d 0d 0a 31 36 0d 0a 31 36 0d 0a 31 36  ----..16..16..16
18be0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
18bf0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
18c00 49 4e 43 54 20 2b 20 34 39 20 2a 20 2b 20 74 61  INCT + 49 * + ta
18c10 62 31 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20  b1.col0 AS col0 
18c20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20  FROM tab1 GROUP 
18c30 42 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d  BY tab1.col0..--
18c40 2d 2d 0d 0a 31 30 37 38 0d 0a 31 33 37 32 0d 0a  --..1078..1372..
18c50 34 30 31 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  4018....onlyif m
18c60 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
18c70 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
18c80 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
18c90 72 74 20 6c 61 62 65 6c 2d 38 30 34 0d 0a 53 45  rt label-804..SE
18ca0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
18cb0 74 61 62 31 2e 63 6f 6c 30 20 44 49 56 20 2d 20  tab1.col0 DIV - 
18cc0 74 61 62 31 2e 63 6f 6c 30 20 46 52 4f 4d 20 74  tab1.col0 FROM t
18cd0 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
18ce0 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d  1.col0..----..1.
18cf0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
18d00 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
18d10 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
18d20 74 20 6c 61 62 65 6c 2d 38 30 34 0d 0a 53 45 4c  t label-804..SEL
18d30 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 74  ECT DISTINCT - t
18d40 61 62 31 2e 63 6f 6c 30 20 2f 20 2d 20 74 61 62  ab1.col0 / - tab
18d50 31 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  1.col0 FROM tab1
18d60 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
18d70 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a  ol0..----..1....
18d80 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
18d90 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f  .SELECT ALL + CO
18da0 41 4c 45 53 43 45 20 28 20 38 37 2c 20 63 6f 72  ALESCE ( 87, cor
18db0 30 2e 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 32  0.col2 ) AS col2
18dc0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
18dd0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
18de0 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 38 37 0d  .col2..----..87.
18df0 0a 38 37 0d 0a 38 37 0d 0a 0d 0a 71 75 65 72 79  .87..87....query
18e00 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
18e10 43 54 20 31 31 20 2a 20 39 31 20 41 53 20 63 6f  CT 11 * 91 AS co
18e20 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f  l2 FROM tab2 GRO
18e30 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d  UP BY tab2.col2.
18e40 0a 2d 2d 2d 2d 0d 0a 31 30 30 31 0d 0a 31 30 30  .----..1001..100
18e50 31 0d 0a 31 30 30 31 0d 0a 0d 0a 6f 6e 6c 79 69  1..1001....onlyi
18e60 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
18e70 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
18e80 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
18e90 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 30 37 0d  wsort label-807.
18ea0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
18eb0 20 63 6f 72 30 2e 63 6f 6c 30 20 44 49 56 20 36   cor0.col0 DIV 6
18ec0 34 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  4 FROM tab1 AS c
18ed0 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c  or0 GROUP BY col
18ee0 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a 0d  0..----..0..1...
18ef0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
18f00 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
18f10 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
18f20 6c 61 62 65 6c 2d 38 30 37 0d 0a 53 45 4c 45 43  label-807..SELEC
18f30 54 20 44 49 53 54 49 4e 43 54 20 63 6f 72 30 2e  T DISTINCT cor0.
18f40 63 6f 6c 30 20 2f 20 36 34 20 46 52 4f 4d 20 74  col0 / 64 FROM t
18f50 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab1 AS cor0 GROU
18f60 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  P BY col0..----.
18f70 0a 30 0d 0a 31 0d 0a 0d 0a 71 75 65 72 79 20 49  .0..1....query I
18f80 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
18f90 20 41 4c 4c 20 2d 20 33 39 20 46 52 4f 4d 20 74   ALL - 39 FROM t
18fa0 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
18fb0 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a  P BY cor0.col1..
18fc0 2d 2d 2d 2d 0d 0a 2d 33 39 0d 0a 2d 33 39 0d 0a  ----..-39..-39..
18fd0 2d 33 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -39....query I r
18fe0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
18ff0 20 35 39 20 46 52 4f 4d 20 74 61 62 32 20 47 52   59 FROM tab2 GR
19000 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31  OUP BY tab2.col1
19010 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 39 0d 0a 2d 35 39  ..----..-59..-59
19020 0d 0a 2d 35 39 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-59....query I
19030 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
19040 20 41 4c 4c 20 74 61 62 32 2e 63 6f 6c 32 20 41   ALL tab2.col2 A
19050 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
19060 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20   WHERE NOT NULL 
19070 4e 4f 54 20 49 4e 20 28 20 74 61 62 32 2e 63 6f  NOT IN ( tab2.co
19080 6c 30 20 2d 20 74 61 62 32 2e 63 6f 6c 31 20 29  l0 - tab2.col1 )
19090 20 41 4e 44 20 4e 55 4c 4c 20 42 45 54 57 45 45   AND NULL BETWEE
190a0 4e 20 28 20 4e 55 4c 4c 20 29 20 41 4e 44 20 28  N ( NULL ) AND (
190b0 20 4e 55 4c 4c 20 29 20 47 52 4f 55 50 20 42 59   NULL ) GROUP BY
190c0 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   tab2.col2..----
190d0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
190e0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31  ort..SELECT col1
190f0 20 2a 20 74 61 62 31 2e 63 6f 6c 31 20 46 52 4f   * tab1.col1 FRO
19100 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
19110 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab1.col1..----.
19120 0a 31 39 33 36 0d 0a 33 32 34 39 0d 0a 33 36 0d  .1936..3249..36.
19130 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
19140 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
19150 20 2d 20 74 61 62 31 2e 63 6f 6c 30 20 2a 20 63   - tab1.col0 * c
19160 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol0 AS col1 FROM
19170 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74   tab1 GROUP BY t
19180 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab1.col0..----..
19190 34 38 34 0d 0a 36 37 32 34 0d 0a 37 38 34 0d 0a  484..6724..784..
191a0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
191b0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
191c0 2d 20 74 61 62 32 2e 63 6f 6c 30 20 2b 20 74 61  - tab2.col0 + ta
191d0 62 32 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20  b2.col0 AS col2 
191e0 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
191f0 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d  BY tab2.col0..--
19200 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71  --..0..0..0....q
19210 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
19220 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
19230 74 61 62 30 2e 63 6f 6c 31 20 46 52 4f 4d 20 74  tab0.col1 FROM t
19240 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20  ab0 WHERE NOT ( 
19250 4e 55 4c 4c 20 29 20 49 4e 20 28 20 2b 20 74 61  NULL ) IN ( + ta
19260 62 30 2e 63 6f 6c 31 20 29 20 47 52 4f 55 50 20  b0.col1 ) GROUP 
19270 42 59 20 74 61 62 30 2e 63 6f 6c 31 20 48 41 56  BY tab0.col1 HAV
19280 49 4e 47 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20  ING NOT NULL IS 
19290 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
192a0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
192b0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
192c0 6f 72 30 2e 63 6f 6c 30 20 2a 20 63 6f 6c 30 20  or0.col0 * col0 
192d0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
192e0 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  0 AS cor0 GROUP 
192f0 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  BY cor0.col0..--
19300 2d 2d 0d 0a 31 38 34 39 0d 0a 36 37 36 0d 0a 36  --..1849..676..6
19310 38 38 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  889....skipif po
19320 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
19330 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
19340 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
19350 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
19360 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
19370 0a 53 45 4c 45 43 54 20 2d 20 2b 20 74 61 62 32  .SELECT - + tab2
19380 2e 63 6f 6c 32 20 2a 20 74 61 62 32 2e 63 6f 6c  .col2 * tab2.col
19390 32 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  2 col0 FROM tab2
193a0 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63   GROUP BY tab2.c
193b0 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 33 36 34  ol2..----..-3364
193c0 0d 0a 2d 36 32 34 31 0d 0a 2d 37 35 36 39 0d 0a  ..-6241..-7569..
193d0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
193e0 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 63 6f  t..SELECT - - co
193f0 6c 32 20 2b 20 2b 20 74 61 62 32 2e 63 6f 6c 32  l2 + + tab2.col2
19400 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
19410 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d   BY tab2.col2..-
19420 2d 2d 2d 0d 0a 31 31 36 0d 0a 31 35 38 0d 0a 31  ---..116..158..1
19430 37 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  74....query I ro
19440 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
19450 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 63  col1 FROM tab1 c
19460 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
19470 30 2e 63 6f 6c 30 2c 20 63 6f 6c 30 2c 20 63 6f  0.col0, col0, co
19480 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  r0.col1..----..-
19490 34 34 0d 0a 2d 35 37 0d 0a 2d 36 0d 0a 0d 0a 71  44..-57..-6....q
194a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
194b0 53 45 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c 30  SELECT cor0.col0
194c0 20 2a 20 63 6f 72 30 2e 63 6f 6c 30 20 2b 20 2b   * cor0.col0 + +
194d0 20 31 33 20 2a 20 63 6f 72 30 2e 63 6f 6c 31 20   13 * cor0.col1 
194e0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
194f0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
19500 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d  col0, cor0.col1.
19510 0a 2d 2d 2d 2d 0d 0a 31 30 31 38 0d 0a 38 39 39  .----..1018..899
19520 37 0d 0a 39 30 34 38 0d 0a 0d 0a 71 75 65 72 79  7..9048....query
19530 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
19540 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f  CT DISTINCT + co
19550 72 30 2e 63 6f 6c 30 20 2a 20 39 37 20 46 52 4f  r0.col0 * 97 FRO
19560 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47  M tab1 AS cor0 G
19570 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
19580 30 0d 0a 2d 2d 2d 2d 0d 0a 32 31 33 34 0d 0a 32  0..----..2134..2
19590 37 31 36 0d 0a 37 39 35 34 0d 0a 0d 0a 71 75 65  716..7954....que
195a0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
195b0 4c 45 43 54 20 2d 20 33 34 20 41 53 20 63 6f 6c  LECT - 34 AS col
195c0 32 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30  2 FROM tab1 cor0
195d0 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
195e0 6f 6c 31 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  ol1, col1..----.
195f0 0a 2d 33 34 0d 0a 2d 33 34 0d 0a 2d 33 34 0d 0a  .-34..-34..-34..
19600 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
19610 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
19620 43 54 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 72 30  CT col1 + + cor0
19630 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20  .col1 FROM tab0 
19640 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
19650 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   cor0.col1..----
19660 0d 0a 30 0d 0a 31 36 32 0d 0a 0d 0a 71 75 65 72  ..0..162....quer
19670 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
19680 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 72  ECT DISTINCT cor
19690 30 2e 63 6f 6c 31 20 2d 20 2b 20 63 6f 6c 31 20  0.col1 - + col1 
196a0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
196b0 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
196c0 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d  BY cor0.col1..--
196d0 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  --..0....onlyif 
196e0 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
196f0 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
19700 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
19710 6f 72 74 20 6c 61 62 65 6c 2d 38 32 34 0d 0a 53  ort label-824..S
19720 45 4c 45 43 54 20 63 6f 6c 31 20 44 49 56 20 2d  ELECT col1 DIV -
19730 20 31 37 20 2b 20 2b 20 34 20 41 53 20 63 6f 6c   17 + + 4 AS col
19740 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
19750 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
19760 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d  0.col1..----..1.
19770 0a 31 0d 0a 32 0d 0a 0d 0a 73 6b 69 70 69 66 20  .1..2....skipif 
19780 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
19790 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
197a0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 32  rowsort label-82
197b0 34 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20 2f  4..SELECT col1 /
197c0 20 2d 20 31 37 20 2b 20 2b 20 34 20 41 53 20 63   - 17 + + 4 AS c
197d0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
197e0 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
197f0 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  or0.col1..----..
19800 31 0d 0a 31 0d 0a 32 0d 0a 0d 0a 71 75 65 72 79  1..1..2....query
19810 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
19820 43 54 20 63 6f 72 30 2e 63 6f 6c 30 20 2a 20 63  CT cor0.col0 * c
19830 6f 72 30 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61  or0.col0 FROM ta
19840 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
19850 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63   BY cor0.col0, c
19860 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  or0.col0..----..
19870 31 38 34 39 0d 0a 36 37 36 0d 0a 36 38 38 39 0d  1849..676..6889.
19880 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
19890 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
198a0 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
198b0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
198c0 62 65 6c 2d 38 32 36 0d 0a 53 45 4c 45 43 54 20  bel-826..SELECT 
198d0 41 4c 4c 20 2d 20 2b 20 32 35 20 44 49 56 20 74  ALL - + 25 DIV t
198e0 61 62 31 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61  ab1.col1 FROM ta
198f0 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31  b1 GROUP BY tab1
19900 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 0d  .col1..----..-4.
19910 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  .0..0....skipif 
19920 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
19930 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
19940 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 32  rowsort label-82
19950 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  6..SELECT ALL - 
19960 2b 20 32 35 20 2f 20 74 61 62 31 2e 63 6f 6c 31  + 25 / tab1.col1
19970 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50   FROM tab1 GROUP
19980 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d   BY tab1.col1..-
19990 2d 2d 2d 0d 0a 2d 34 0d 0a 30 0d 0a 30 0d 0a 0d  ---..-4..0..0...
199a0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
199b0 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 74 61 62  ..SELECT + - tab
199c0 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  0.col2 FROM tab0
199d0 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a   GROUP BY col2..
199e0 2d 2d 2d 2d 0d 0a 2d 32 34 0d 0a 2d 33 38 0d 0a  ----..-24..-38..
199f0 2d 37 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -79....query I r
19a00 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
19a10 20 32 36 20 2b 20 2b 20 74 61 62 30 2e 63 6f 6c   26 + + tab0.col
19a20 32 20 2a 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f  2 * - col2 AS co
19a30 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f  l2 FROM tab0 GRO
19a40 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d  UP BY tab0.col2.
19a50 0a 2d 2d 2d 2d 0d 0a 2d 31 34 37 30 0d 0a 2d 36  .----..-1470..-6
19a60 30 32 0d 0a 2d 36 32 36 37 0d 0a 0d 0a 71 75 65  02..-6267....que
19a70 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
19a80 4c 45 43 54 20 38 30 20 46 52 4f 4d 20 74 61 62  LECT 80 FROM tab
19a90 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
19aa0 42 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f  BY cor0.col1, co
19ab0 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 38 30 0d 0a 38 30  l1..----..80..80
19ac0 0d 0a 38 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..80....query I 
19ad0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
19ae0 41 4c 4c 20 2b 20 38 32 20 41 53 20 63 6f 6c 32  ALL + 82 AS col2
19af0 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
19b00 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d   BY tab2.col2..-
19b10 2d 2d 2d 0d 0a 38 32 0d 0a 38 32 0d 0a 38 32 0d  ---..82..82..82.
19b20 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
19b30 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
19b40 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
19b50 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
19b60 62 65 6c 2d 38 33 31 0d 0a 53 45 4c 45 43 54 20  bel-831..SELECT 
19b70 41 4c 4c 20 28 20 2d 20 74 61 62 30 2e 63 6f 6c  ALL ( - tab0.col
19b80 31 20 29 20 2b 20 2b 20 74 61 62 30 2e 63 6f 6c  1 ) + + tab0.col
19b90 31 20 44 49 56 20 2d 20 36 30 20 41 53 20 63 6f  1 DIV - 60 AS co
19ba0 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f  l2 FROM tab0 GRO
19bb0 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d  UP BY tab0.col1.
19bc0 0a 2d 2d 2d 2d 0d 0a 2d 38 32 0d 0a 30 0d 0a 0d  .----..-82..0...
19bd0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
19be0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
19bf0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
19c00 6c 61 62 65 6c 2d 38 33 31 0d 0a 53 45 4c 45 43  label-831..SELEC
19c10 54 20 41 4c 4c 20 28 20 2d 20 74 61 62 30 2e 63  T ALL ( - tab0.c
19c20 6f 6c 31 20 29 20 2b 20 2b 20 74 61 62 30 2e 63  ol1 ) + + tab0.c
19c30 6f 6c 31 20 2f 20 2d 20 36 30 20 41 53 20 63 6f  ol1 / - 60 AS co
19c40 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f  l2 FROM tab0 GRO
19c50 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d  UP BY tab0.col1.
19c60 0a 2d 2d 2d 2d 0d 0a 2d 38 32 0d 0a 30 0d 0a 0d  .----..-82..0...
19c70 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
19c80 0d 0a 53 45 4c 45 43 54 20 35 33 20 2a 20 63 6f  ..SELECT 53 * co
19c90 72 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20  r0.col2 AS col2 
19ca0 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20 47  FROM tab0 cor0 G
19cb0 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
19cc0 32 0d 0a 2d 2d 2d 2d 0d 0a 31 32 37 32 0d 0a 32  2..----..1272..2
19cd0 30 31 34 0d 0a 34 31 38 37 0d 0a 0d 0a 71 75 65  014..4187....que
19ce0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
19cf0 4c 45 43 54 20 41 4c 4c 20 2b 20 35 39 20 41 53  LECT ALL + 59 AS
19d00 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
19d10 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
19d20 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   cor0.col1..----
19d30 0d 0a 35 39 0d 0a 35 39 0d 0a 0d 0a 71 75 65 72  ..59..59....quer
19d40 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
19d50 45 43 54 20 41 4c 4c 20 34 34 20 2a 20 2b 20 63  ECT ALL 44 * + c
19d60 6f 72 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 31  or0.col2 AS col1
19d70 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
19d80 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
19d90 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 30 35  .col2..----..105
19da0 36 0d 0a 31 36 37 32 0d 0a 33 34 37 36 0d 0a 0d  6..1672..3476...
19db0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
19dc0 0d 0a 53 45 4c 45 43 54 20 2b 20 35 30 20 41 53  ..SELECT + 50 AS
19dd0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
19de0 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
19df0 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   cor0.col2..----
19e00 0d 0a 35 30 0d 0a 35 30 0d 0a 35 30 0d 0a 0d 0a  ..50..50..50....
19e10 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
19e20 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
19e30 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
19e40 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
19e50 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
19e60 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
19e70 20 44 49 53 54 49 4e 43 54 20 74 61 62 32 2e 63   DISTINCT tab2.c
19e80 6f 6c 30 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  ol0 col0 FROM ta
19e90 62 32 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 30  b2 GROUP BY col0
19ea0 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 39 31 0d 0a  ..----..15..91..
19eb0 39 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  92....query I ro
19ec0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
19ed0 2d 20 34 35 20 46 52 4f 4d 20 74 61 62 32 20 47  - 45 FROM tab2 G
19ee0 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
19ef0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 35 0d 0a 2d 34  0..----..-45..-4
19f00 35 0d 0a 2d 34 35 0d 0a 0d 0a 6f 6e 6c 79 69 66  5..-45....onlyif
19f10 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
19f20 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
19f30 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
19f40 73 6f 72 74 20 6c 61 62 65 6c 2d 38 33 38 0d 0a  sort label-838..
19f50 53 45 4c 45 43 54 20 2b 20 43 41 53 54 28 20 4e  SELECT + CAST( N
19f60 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
19f70 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  + col2 FROM tab2
19f80 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
19f90 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y cor0.col2..---
19fa0 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
19fb0 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
19fc0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
19fd0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
19fe0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 33 38 0d  wsort label-838.
19ff0 0a 53 45 4c 45 43 54 20 2b 20 43 41 53 54 20 28  .SELECT + CAST (
1a000 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
1a010 20 29 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74   ) + col2 FROM t
1a020 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
1a030 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a  P BY cor0.col2..
1a040 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
1a050 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20  ..NULL....query 
1a060 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1a070 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 72  T DISTINCT + cor
1a080 30 2e 63 6f 6c 31 20 2b 20 2d 20 63 6f 72 30 2e  0.col1 + - cor0.
1a090 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41  col2 FROM tab0 A
1a0a0 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
1a0b0 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 72 30 2e  cor0.col2, cor0.
1a0c0 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 38 0d  col1..----..-38.
1a0d0 0a 2d 37 39 0d 0a 35 37 0d 0a 0d 0a 6f 6e 6c 79  .-79..57....only
1a0e0 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
1a0f0 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
1a100 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
1a110 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 34 30  owsort label-840
1a120 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 43 41 53  ..SELECT + - CAS
1a130 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
1a140 44 20 29 20 2a 20 74 61 62 30 2e 63 6f 6c 31 20  D ) * tab0.col1 
1a150 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
1a160 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab0.col1..--
1a170 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
1a180 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1a190 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1a1a0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1a1b0 20 6c 61 62 65 6c 2d 38 34 30 0d 0a 53 45 4c 45   label-840..SELE
1a1c0 43 54 20 2b 20 2d 20 43 41 53 54 20 28 20 4e 55  CT + - CAST ( NU
1a1d0 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
1a1e0 2a 20 74 61 62 30 2e 63 6f 6c 31 20 46 52 4f 4d  * tab0.col1 FROM
1a1f0 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
1a200 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  ab0.col1..----..
1a210 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75  NULL..NULL....qu
1a220 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1a230 45 4c 45 43 54 20 33 37 20 41 53 20 63 6f 6c 32  ELECT 37 AS col2
1a240 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
1a250 20 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d   BY tab0.col1..-
1a260 2d 2d 2d 0d 0a 33 37 0d 0a 33 37 0d 0a 0d 0a 6f  ---..37..37....o
1a270 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
1a280 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
1a290 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
1a2a0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1a2b0 38 34 32 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  842..SELECT + co
1a2c0 72 30 2e 63 6f 6c 30 20 44 49 56 20 2d 20 63 6f  r0.col0 DIV - co
1a2d0 72 30 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  r0.col0 FROM tab
1a2e0 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  2 AS cor0 GROUP 
1a2f0 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  BY cor0.col0..--
1a300 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a  --..-1..-1..-1..
1a310 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1a320 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1a330 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1a340 20 6c 61 62 65 6c 2d 38 34 32 0d 0a 53 45 4c 45   label-842..SELE
1a350 43 54 20 2b 20 63 6f 72 30 2e 63 6f 6c 30 20 2f  CT + cor0.col0 /
1a360 20 2d 20 63 6f 72 30 2e 63 6f 6c 30 20 46 52 4f   - cor0.col0 FRO
1a370 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
1a380 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
1a390 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d  0..----..-1..-1.
1a3a0 0a 2d 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .-1....query I r
1a3b0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
1a3c0 20 74 61 62 32 2e 63 6f 6c 32 20 2b 20 2b 20 74   tab2.col2 + + t
1a3d0 61 62 32 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 31  ab2.col2 AS col1
1a3e0 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
1a3f0 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d   BY tab2.col2..-
1a400 2d 2d 2d 0d 0a 31 31 36 0d 0a 31 35 38 0d 0a 31  ---..116..158..1
1a410 37 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  74....query I ro
1a420 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
1a430 36 38 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  68 AS col1 FROM 
1a440 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 63 6f  tab2 GROUP BY co
1a450 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 38 0d 0a 2d  l2..----..-68..-
1a460 36 38 0d 0a 2d 36 38 0d 0a 0d 0a 6f 6e 6c 79 69  68..-68....onlyi
1a470 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
1a480 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
1a490 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
1a4a0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 34 35 0d  wsort label-845.
1a4b0 0a 53 45 4c 45 43 54 20 2d 20 74 61 62 31 2e 63  .SELECT - tab1.c
1a4c0 6f 6c 30 20 44 49 56 20 2b 20 63 6f 6c 30 20 46  ol0 DIV + col0 F
1a4d0 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
1a4e0 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y tab1.col0..---
1a4f0 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d  -..-1..-1..-1...
1a500 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1a510 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1a520 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1a530 6c 61 62 65 6c 2d 38 34 35 0d 0a 53 45 4c 45 43  label-845..SELEC
1a540 54 20 2d 20 74 61 62 31 2e 63 6f 6c 30 20 2f 20  T - tab1.col0 / 
1a550 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  + col0 FROM tab1
1a560 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
1a570 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d  ol0..----..-1..-
1a580 31 0d 0a 2d 31 0d 0a 0d 0a 71 75 65 72 79 20 49  1..-1....query I
1a590 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1a5a0 20 41 4c 4c 20 28 20 2b 20 36 20 29 20 41 53 20   ALL ( + 6 ) AS 
1a5b0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
1a5c0 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
1a5d0 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  cor0.col2..----.
1a5e0 0a 36 0d 0a 36 0d 0a 36 0d 0a 0d 0a 71 75 65 72  .6..6..6....quer
1a5f0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1a600 45 43 54 20 2d 20 63 6f 72 30 2e 63 6f 6c 30 20  ECT - cor0.col0 
1a610 2b 20 2b 20 63 6f 72 30 2e 63 6f 6c 30 20 46 52  + + cor0.col0 FR
1a620 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
1a630 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
1a640 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a  l0..----..0..0..
1a650 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
1a660 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 36  sort..SELECT + 6
1a670 39 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  9 FROM tab2 cor0
1a680 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
1a690 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 36 39 0d 0a 36  ol0..----..69..6
1a6a0 39 0d 0a 36 39 0d 0a 0d 0a 71 75 65 72 79 20 49  9..69....query I
1a6b0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1a6c0 20 31 37 20 2d 20 2b 20 39 35 20 2a 20 2d 20 63   17 - + 95 * - c
1a6d0 6f 72 30 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 30  or0.col0 AS col0
1a6e0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
1a6f0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
1a700 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 34 38  .col0..----..248
1a710 37 0d 0a 34 31 30 32 0d 0a 37 39 30 32 0d 0a 0d  7..4102..7902...
1a720 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1a730 0d 0a 53 45 4c 45 43 54 20 38 34 20 46 52 4f 4d  ..SELECT 84 FROM
1a740 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47 52   tab2 AS cor0 GR
1a750 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30  OUP BY cor0.col0
1a760 2c 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 38 34  , col2..----..84
1a770 0d 0a 38 34 0d 0a 38 34 0d 0a 0d 0a 71 75 65 72  ..84..84....quer
1a780 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1a790 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 72  ECT DISTINCT cor
1a7a0 30 2e 63 6f 6c 31 20 2a 20 63 6f 72 30 2e 63 6f  0.col1 * cor0.co
1a7b0 6c 31 20 2d 20 2d 20 36 30 20 41 53 20 63 6f 6c  l1 - - 60 AS col
1a7c0 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  0 FROM tab2 cor0
1a7d0 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30   CROSS JOIN tab0
1a7e0 20 41 53 20 63 6f 72 31 20 47 52 4f 55 50 20 42   AS cor1 GROUP B
1a7f0 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y cor0.col1..---
1a800 2d 0d 0a 31 37 34 31 0d 0a 33 35 34 31 0d 0a 33  -..1741..3541..3
1a810 37 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  781....query I r
1a820 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
1a830 20 38 37 20 46 52 4f 4d 20 74 61 62 30 20 47 52   87 FROM tab0 GR
1a840 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32  OUP BY tab0.col2
1a850 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 37 0d 0a 2d 38 37  ..----..-87..-87
1a860 0d 0a 2d 38 37 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-87....query I
1a870 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1a880 20 2b 20 36 20 41 53 20 63 6f 6c 31 20 46 52 4f   + 6 AS col1 FRO
1a890 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
1a8a0 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
1a8b0 32 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a 36 0d 0a 36  2..----..6..6..6
1a8c0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1a8d0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 37 34 20 46  ort..SELECT 74 F
1a8e0 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42  ROM tab0 GROUP B
1a8f0 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y tab0.col0..---
1a900 2d 0d 0a 37 34 0d 0a 37 34 0d 0a 37 34 0d 0a 0d  -..74..74..74...
1a910 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1a920 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1a930 54 20 2b 20 38 38 20 46 52 4f 4d 20 74 61 62 30  T + 88 FROM tab0
1a940 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
1a950 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 38 38  Y col1..----..88
1a960 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
1a970 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
1a980 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
1a990 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
1a9a0 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
1a9b0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1a9c0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
1a9d0 33 34 20 2a 20 2b 20 63 6f 72 30 2e 63 6f 6c 32  34 * + cor0.col2
1a9e0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
1a9f0 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
1aa00 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   cor0.col2..----
1aa10 0d 0a 31 39 37 32 0d 0a 32 36 38 36 0d 0a 32 39  ..1972..2686..29
1aa20 35 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  58....query I ro
1aa30 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
1aa40 53 54 49 4e 43 54 20 2b 20 74 61 62 31 2e 63 6f  STINCT + tab1.co
1aa50 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l0 AS col0 FROM 
1aa60 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 63 6f  tab1 GROUP BY co
1aa70 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32 38  l0..----..22..28
1aa80 0d 0a 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..82....query I 
1aa90 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1aaa0 44 49 53 54 49 4e 43 54 20 74 61 62 30 2e 63 6f  DISTINCT tab0.co
1aab0 6c 31 20 2a 20 35 30 20 46 52 4f 4d 20 74 61 62  l1 * 50 FROM tab
1aac0 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
1aad0 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 34  col1..----..0..4
1aae0 30 35 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  050....query I r
1aaf0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
1ab00 49 53 54 49 4e 43 54 20 2d 20 2b 20 28 20 2b 20  ISTINCT - + ( + 
1ab10 74 61 62 32 2e 63 6f 6c 30 20 29 20 46 52 4f 4d  tab2.col0 ) FROM
1ab20 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74   tab2 GROUP BY t
1ab30 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab2.col0..----..
1ab40 2d 31 35 0d 0a 2d 39 31 0d 0a 2d 39 32 0d 0a 0d  -15..-91..-92...
1ab50 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1ab60 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1ab70 54 20 2d 20 2b 20 74 61 62 30 2e 63 6f 6c 32 20  T - + tab0.col2 
1ab80 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
1ab90 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  BY col2..----..-
1aba0 32 34 0d 0a 2d 33 38 0d 0a 2d 37 39 0d 0a 0d 0a  24..-38..-79....
1abb0 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
1abc0 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
1abd0 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
1abe0 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
1abf0 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
1ac00 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1ac10 20 41 4c 4c 20 2d 20 74 61 62 30 2e 63 6f 6c 30   ALL - tab0.col0
1ac20 20 2a 20 2d 20 74 61 62 30 2e 63 6f 6c 30 20 63   * - tab0.col0 c
1ac30 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol2 FROM tab0 GR
1ac40 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30  OUP BY tab0.col0
1ac50 0d 0a 2d 2d 2d 2d 0d 0a 31 38 34 39 0d 0a 36 37  ..----..1849..67
1ac60 36 0d 0a 36 38 38 39 0d 0a 0d 0a 71 75 65 72 79  6..6889....query
1ac70 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1ac80 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 34 33  CT DISTINCT - 43
1ac90 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
1aca0 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d   BY tab0.col0..-
1acb0 2d 2d 2d 0d 0a 2d 34 33 0d 0a 0d 0a 71 75 65 72  ---..-43....quer
1acc0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1acd0 45 43 54 20 2d 20 31 20 2b 20 2d 20 63 6f 6c 30  ECT - 1 + - col0
1ace0 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
1acf0 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d   BY tab2.col0..-
1ad00 2d 2d 2d 0d 0a 2d 31 36 0d 0a 2d 39 32 0d 0a 2d  ---..-16..-92..-
1ad10 39 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  93....query I ro
1ad20 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
1ad30 53 54 49 4e 43 54 20 2b 20 38 33 20 2b 20 32 32  STINCT + 83 + 22
1ad40 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
1ad50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d   BY tab2.col0..-
1ad60 2d 2d 2d 0d 0a 31 30 35 0d 0a 0d 0a 71 75 65 72  ---..105....quer
1ad70 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1ad80 45 43 54 20 41 4c 4c 20 2d 20 63 6f 72 30 2e 63  ECT ALL - cor0.c
1ad90 6f 6c 32 20 2b 20 63 6f 72 30 2e 63 6f 6c 32 20  ol2 + cor0.col2 
1ada0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
1adb0 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  2 AS cor0 GROUP 
1adc0 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d  BY cor0.col2..--
1add0 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71  --..0..0..0....q
1ade0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1adf0 53 45 4c 45 43 54 20 2b 20 2d 20 35 31 20 41 53  SELECT + - 51 AS
1ae00 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
1ae10 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f  GROUP BY tab0.co
1ae20 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 2d  l0..----..-51..-
1ae30 35 31 0d 0a 2d 35 31 0d 0a 0d 0a 71 75 65 72 79  51..-51....query
1ae40 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1ae50 43 54 20 63 6f 72 30 2e 63 6f 6c 31 20 41 53 20  CT cor0.col1 AS 
1ae60 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41  col0 FROM tab0 A
1ae70 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
1ae80 63 6f 6c 31 2c 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d  col1, col2..----
1ae90 0d 0a 30 0d 0a 30 0d 0a 38 31 0d 0a 0d 0a 71 75  ..0..0..81....qu
1aea0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1aeb0 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 72 30  ELECT ALL - cor0
1aec0 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52  .col0 AS col2 FR
1aed0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
1aee0 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
1aef0 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d  l2, cor0.col0..-
1af00 2d 2d 2d 0d 0a 2d 32 32 0d 0a 2d 32 38 0d 0a 2d  ---..-22..-28..-
1af10 38 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  82....onlyif mys
1af20 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
1af30 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
1af40 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1af50 20 6c 61 62 65 6c 2d 38 36 39 0d 0a 53 45 4c 45   label-869..SELE
1af60 43 54 20 41 4c 4c 20 2d 20 43 4f 41 4c 45 53 43  CT ALL - COALESC
1af70 45 20 28 20 39 30 2c 20 2b 20 74 61 62 30 2e 63  E ( 90, + tab0.c
1af80 6f 6c 31 20 2a 20 37 31 20 2b 20 2b 20 74 61 62  ol1 * 71 + + tab
1af90 30 2e 63 6f 6c 31 20 44 49 56 20 74 61 62 30 2e  0.col1 DIV tab0.
1afa0 63 6f 6c 30 2c 20 2d 20 74 61 62 30 2e 63 6f 6c  col0, - tab0.col
1afb0 30 20 2a 20 2b 20 74 61 62 30 2e 63 6f 6c 32 20  0 * + tab0.col2 
1afc0 29 20 2a 20 33 20 41 53 20 63 6f 6c 30 20 46 52  ) * 3 AS col0 FR
1afd0 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59  OM tab0 GROUP BY
1afe0 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37   col2..----..-27
1aff0 30 0d 0a 2d 32 37 30 0d 0a 2d 32 37 30 0d 0a 0d  0..-270..-270...
1b000 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1b010 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1b020 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
1b030 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 68  l # PostgreSQL h
1b040 61 73 20 73 74 72 69 63 74 20 63 6f 6c 75 6d 6e  as strict column
1b050 20 75 73 61 67 65 20 66 6f 72 20 47 52 4f 55 50   usage for GROUP
1b060 20 42 59 20 63 6c 61 75 73 65 73 0d 0a 71 75 65   BY clauses..que
1b070 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1b080 65 6c 2d 38 36 39 0d 0a 53 45 4c 45 43 54 20 41  el-869..SELECT A
1b090 4c 4c 20 2d 20 43 4f 41 4c 45 53 43 45 20 28 20  LL - COALESCE ( 
1b0a0 39 30 2c 20 2b 20 74 61 62 30 2e 63 6f 6c 31 20  90, + tab0.col1 
1b0b0 2a 20 37 31 20 2b 20 2b 20 74 61 62 30 2e 63 6f  * 71 + + tab0.co
1b0c0 6c 31 20 2f 20 74 61 62 30 2e 63 6f 6c 30 2c 20  l1 / tab0.col0, 
1b0d0 2d 20 74 61 62 30 2e 63 6f 6c 30 20 2a 20 2b 20  - tab0.col0 * + 
1b0e0 74 61 62 30 2e 63 6f 6c 32 20 29 20 2a 20 33 20  tab0.col2 ) * 3 
1b0f0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
1b100 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d  0 GROUP BY col2.
1b110 0a 2d 2d 2d 2d 0d 0a 2d 32 37 30 0d 0a 2d 32 37  .----..-270..-27
1b120 30 0d 0a 2d 32 37 30 0d 0a 0d 0a 71 75 65 72 79  0..-270....query
1b130 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1b140 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 32 35  CT DISTINCT + 25
1b150 20 2a 20 2d 20 74 61 62 32 2e 63 6f 6c 31 20 46   * - tab2.col1 F
1b160 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42  ROM tab2 GROUP B
1b170 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y tab2.col1..---
1b180 2d 0d 0a 2d 31 30 32 35 0d 0a 2d 31 34 37 35 0d  -..-1025..-1475.
1b190 0a 2d 31 35 32 35 0d 0a 0d 0a 73 6b 69 70 69 66  .-1525....skipif
1b1a0 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
1b1b0 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
1b1c0 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
1b1d0 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
1b1e0 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
1b1f0 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 32 30 20  rt..SELECT - 20 
1b200 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41  col0 FROM tab0 A
1b210 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49  S cor0 CROSS JOI
1b220 4e 20 74 61 62 30 20 63 6f 72 31 20 47 52 4f 55  N tab0 cor1 GROU
1b230 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a  P BY cor0.col2..
1b240 2d 2d 2d 2d 0d 0a 2d 32 30 0d 0a 2d 32 30 0d 0a  ----..-20..-20..
1b250 2d 32 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -20....query I r
1b260 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
1b270 20 28 20 2d 20 39 39 20 29 20 46 52 4f 4d 20 74   ( - 99 ) FROM t
1b280 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab0 AS cor0 GROU
1b290 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a  P BY cor0.col1..
1b2a0 2d 2d 2d 2d 0d 0a 39 39 0d 0a 39 39 0d 0a 0d 0a  ----..99..99....
1b2b0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1b2c0 0a 53 45 4c 45 43 54 20 2b 20 2d 20 38 34 20 41  .SELECT + - 84 A
1b2d0 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
1b2e0 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
1b2f0 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 34 0d 0a  ol0..----..-84..
1b300 2d 38 34 0d 0a 2d 38 34 0d 0a 0d 0a 71 75 65 72  -84..-84....quer
1b310 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1b320 45 43 54 20 2d 20 74 61 62 32 2e 63 6f 6c 31 20  ECT - tab2.col1 
1b330 2d 20 36 37 20 46 52 4f 4d 20 74 61 62 32 20 47  - 67 FROM tab2 G
1b340 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
1b350 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 38 0d 0a 2d  1..----..-108..-
1b360 31 32 36 0d 0a 2d 31 32 38 0d 0a 0d 0a 71 75 65  126..-128....que
1b370 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1b380 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
1b390 31 35 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  15 AS col2 FROM 
1b3a0 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61  tab2 GROUP BY ta
1b3b0 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b2.col0..----..-
1b3c0 31 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  15....query I ro
1b3d0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
1b3e0 4c 20 2b 20 34 39 20 46 52 4f 4d 20 74 61 62 32  L + 49 FROM tab2
1b3f0 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63   GROUP BY tab2.c
1b400 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 34 39 0d 0a 34  ol0..----..49..4
1b410 39 0d 0a 34 39 0d 0a 0d 0a 71 75 65 72 79 20 49  9..49....query I
1b420 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1b430 20 2b 20 2b 20 33 32 20 46 52 4f 4d 20 74 61 62   + + 32 FROM tab
1b440 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
1b450 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 33 32 0d 0a  col0..----..32..
1b460 33 32 0d 0a 33 32 0d 0a 0d 0a 71 75 65 72 79 20  32..32....query 
1b470 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1b480 54 20 34 38 20 41 53 20 63 6f 6c 30 20 46 52 4f  T 48 AS col0 FRO
1b490 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
1b4a0 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
1b4b0 32 0d 0a 2d 2d 2d 2d 0d 0a 34 38 0d 0a 34 38 0d  2..----..48..48.
1b4c0 0a 34 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .48....query I r
1b4d0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 37  owsort..SELECT 7
1b4e0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
1b4f0 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
1b500 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d   BY cor0.col2..-
1b510 2d 2d 2d 0d 0a 37 0d 0a 37 0d 0a 37 0d 0a 0d 0a  ---..7..7..7....
1b520 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1b530 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1b540 20 2d 20 30 20 46 52 4f 4d 20 74 61 62 31 20 63   - 0 FROM tab1 c
1b550 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
1b560 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  0.col0..----..0.
1b570 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1b580 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
1b590 20 63 6f 6c 32 20 2a 20 36 37 20 46 52 4f 4d 20   col2 * 67 FROM 
1b5a0 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
1b5b0 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  b1.col2..----..-
1b5c0 33 30 31 35 0d 0a 2d 34 37 35 37 0d 0a 2d 35 33  3015..-4757..-53
1b5d0 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  6....onlyif mysq
1b5e0 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
1b5f0 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
1b600 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1b610 6c 61 62 65 6c 2d 38 38 32 0d 0a 53 45 4c 45 43  label-882..SELEC
1b620 54 20 44 49 53 54 49 4e 43 54 20 74 61 62 31 2e  T DISTINCT tab1.
1b630 63 6f 6c 32 20 44 49 56 20 2b 20 74 61 62 31 2e  col2 DIV + tab1.
1b640 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f  col2 AS col1 FRO
1b650 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
1b660 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  tab1.col2..----.
1b670 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .1....skipif mys
1b680 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1b690 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
1b6a0 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38 32 0d 0a  sort label-882..
1b6b0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1b6c0 74 61 62 31 2e 63 6f 6c 32 20 2f 20 2b 20 74 61  tab1.col2 / + ta
1b6d0 62 31 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20  b1.col2 AS col1 
1b6e0 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20  FROM tab1 GROUP 
1b6f0 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d  BY tab1.col2..--
1b700 2d 2d 0d 0a 31 0d 0a 0d 0a 71 75 65 72 79 20 49  --..1....query I
1b710 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1b720 20 63 6f 72 30 2e 63 6f 6c 31 20 41 53 20 63 6f   cor0.col1 AS co
1b730 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
1b740 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
1b750 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f  r0.col0, cor0.co
1b760 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d  l1, cor0.col2..-
1b770 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 38 31 0d 0a 0d  ---..0..0..81...
1b780 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1b790 0d 0a 53 45 4c 45 43 54 20 2b 20 28 20 2b 20 39  ..SELECT + ( + 9
1b7a0 36 20 29 20 46 52 4f 4d 20 74 61 62 32 20 47 52  6 ) FROM tab2 GR
1b7b0 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30  OUP BY tab2.col0
1b7c0 0d 0a 2d 2d 2d 2d 0d 0a 39 36 0d 0a 39 36 0d 0a  ..----..96..96..
1b7d0 39 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  96....onlyif mys
1b7e0 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
1b7f0 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
1b800 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1b810 20 6c 61 62 65 6c 2d 38 38 35 0d 0a 53 45 4c 45   label-885..SELE
1b820 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f  CT DISTINCT - co
1b830 6c 32 20 44 49 56 20 37 32 20 46 52 4f 4d 20 74  l2 DIV 72 FROM t
1b840 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab2 GROUP BY tab
1b850 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  2.col2..----..-1
1b860 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
1b870 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1b880 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
1b890 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38 35 0d  wsort label-885.
1b8a0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1b8b0 20 2d 20 63 6f 6c 32 20 2f 20 37 32 20 46 52 4f   - col2 / 72 FRO
1b8c0 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
1b8d0 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  tab2.col2..----.
1b8e0 0a 2d 31 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  .-1..0....query 
1b8f0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1b900 54 20 41 4c 4c 20 2d 20 63 6f 6c 31 20 46 52 4f  T ALL - col1 FRO
1b910 4d 20 74 61 62 31 20 63 6f 72 30 20 47 52 4f 55  M tab1 cor0 GROU
1b920 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a  P BY cor0.col1..
1b930 2d 2d 2d 2d 0d 0a 2d 34 34 0d 0a 2d 35 37 0d 0a  ----..-44..-57..
1b940 2d 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  -6....query I ro
1b950 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
1b960 4c 20 2d 20 74 61 62 31 2e 63 6f 6c 32 20 46 52  L - tab1.col2 FR
1b970 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
1b980 20 74 61 62 31 2e 63 6f 6c 32 20 48 41 56 49 4e   tab1.col2 HAVIN
1b990 47 20 4e 55 4c 4c 20 4e 4f 54 20 49 4e 20 28 20  G NULL NOT IN ( 
1b9a0 74 61 62 31 2e 63 6f 6c 32 20 29 0d 0a 2d 2d 2d  tab1.col2 )..---
1b9b0 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
1b9c0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
1b9d0 54 49 4e 43 54 20 2b 20 4e 55 4c 4c 49 46 20 28  TINCT + NULLIF (
1b9e0 20 31 37 2c 20 63 6f 72 31 2e 63 6f 6c 31 20 29   17, cor1.col1 )
1b9f0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
1ba00 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
1ba10 62 31 20 41 53 20 63 6f 72 31 20 47 52 4f 55 50  b1 AS cor1 GROUP
1ba20 20 42 59 20 63 6f 72 31 2e 63 6f 6c 31 2c 20 63   BY cor1.col1, c
1ba30 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  or0.col0..----..
1ba40 31 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  17....query I ro
1ba50 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
1ba60 4c 20 2b 20 2b 20 31 38 20 41 53 20 63 6f 6c 30  L + + 18 AS col0
1ba70 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
1ba80 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a   BY col2..----..
1ba90 31 38 0d 0a 31 38 0d 0a 31 38 0d 0a 0d 0a 71 75  18..18..18....qu
1baa0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1bab0 45 4c 45 43 54 20 2d 20 2b 20 34 36 20 41 53 20  ELECT - + 46 AS 
1bac0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 47  col0 FROM tab2 G
1bad0 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
1bae0 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 0d 0a 2d 34  1..----..-46..-4
1baf0 36 0d 0a 2d 34 36 0d 0a 0d 0a 6f 6e 6c 79 69 66  6..-46....onlyif
1bb00 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
1bb10 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
1bb20 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
1bb30 73 6f 72 74 20 6c 61 62 65 6c 2d 38 39 31 0d 0a  sort label-891..
1bb40 53 45 4c 45 43 54 20 2b 20 2d 20 43 41 53 54 28  SELECT + - CAST(
1bb50 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
1bb60 29 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  ) FROM tab2 GROU
1bb70 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a  P BY tab2.col1..
1bb80 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
1bb90 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
1bba0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
1bbb0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
1bbc0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
1bbd0 39 31 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 43  91..SELECT + - C
1bbe0 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
1bbf0 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62  TEGER ) FROM tab
1bc00 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
1bc10 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  col1..----..NULL
1bc20 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..NULL..NULL....
1bc30 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1bc40 0a 53 45 4c 45 43 54 20 2b 20 2d 20 63 6f 6c 31  .SELECT + - col1
1bc50 20 2b 20 74 61 62 31 2e 63 6f 6c 31 20 46 52 4f   + tab1.col1 FRO
1bc60 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
1bc70 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab1.col1..----.
1bc80 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79  .0..0..0....only
1bc90 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
1bca0 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
1bcb0 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
1bcc0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 39 33  owsort label-893
1bcd0 0d 0a 53 45 4c 45 43 54 20 2b 20 74 61 62 31 2e  ..SELECT + tab1.
1bce0 63 6f 6c 31 20 2a 20 28 20 74 61 62 31 2e 63 6f  col1 * ( tab1.co
1bcf0 6c 31 20 29 20 2d 20 2b 20 33 34 20 44 49 56 20  l1 ) - + 34 DIV 
1bd00 74 61 62 31 2e 63 6f 6c 31 20 46 52 4f 4d 20 74  tab1.col1 FROM t
1bd10 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
1bd20 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 39  1.col1..----..19
1bd30 33 36 0d 0a 33 31 0d 0a 33 32 34 39 0d 0a 0d 0a  36..31..3249....
1bd40 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1bd50 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1bd60 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1bd70 61 62 65 6c 2d 38 39 33 0d 0a 53 45 4c 45 43 54  abel-893..SELECT
1bd80 20 2b 20 74 61 62 31 2e 63 6f 6c 31 20 2a 20 28   + tab1.col1 * (
1bd90 20 74 61 62 31 2e 63 6f 6c 31 20 29 20 2d 20 2b   tab1.col1 ) - +
1bda0 20 33 34 20 2f 20 74 61 62 31 2e 63 6f 6c 31 20   34 / tab1.col1 
1bdb0 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20  FROM tab1 GROUP 
1bdc0 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab1.col1..--
1bdd0 2d 2d 0d 0a 31 39 33 36 0d 0a 33 31 0d 0a 33 32  --..1936..31..32
1bde0 34 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  49....query I ro
1bdf0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
1be00 63 6f 6c 30 20 2b 20 2b 20 74 61 62 32 2e 63 6f  col0 + + tab2.co
1be10 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f  l0 FROM tab2 GRO
1be20 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d  UP BY tab2.col0.
1be30 0a 2d 2d 2d 2d 0d 0a 31 38 32 0d 0a 31 38 34 0d  .----..182..184.
1be40 0a 33 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .30....query I r
1be50 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 31  owsort..SELECT 1
1be60 37 20 2b 20 74 61 62 32 2e 63 6f 6c 31 20 46 52  7 + tab2.col1 FR
1be70 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
1be80 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   tab2.col1..----
1be90 0d 0a 35 38 0d 0a 37 36 0d 0a 37 38 0d 0a 0d 0a  ..58..76..78....
1bea0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1beb0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1bec0 20 2d 20 2d 20 33 20 41 53 20 63 6f 6c 30 20 46   - - 3 AS col0 F
1bed0 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
1bee0 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y tab1.col1..---
1bef0 2d 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -..3....query I 
1bf00 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1bf10 2d 20 74 61 62 31 2e 63 6f 6c 30 20 41 53 20 63  - tab1.col0 AS c
1bf20 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol1 FROM tab1 GR
1bf30 4f 55 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d  OUP BY col0..---
1bf40 2d 0d 0a 2d 32 32 0d 0a 2d 32 38 0d 0a 2d 38 32  -..-22..-28..-82
1bf50 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
1bf60 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
1bf70 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
1bf80 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
1bf90 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
1bfa0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1bfb0 4c 45 43 54 20 2d 20 2d 20 74 61 62 30 2e 63 6f  LECT - - tab0.co
1bfc0 6c 32 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  l2 col1 FROM tab
1bfd0 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
1bfe0 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32 34 0d 0a  col2..----..24..
1bff0 33 38 0d 0a 37 39 0d 0a 0d 0a 71 75 65 72 79 20  38..79....query 
1c000 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1c010 54 20 41 4c 4c 20 2d 20 28 20 2b 20 34 32 20 29  T ALL - ( + 42 )
1c020 20 2b 20 63 6f 72 30 2e 63 6f 6c 32 20 41 53 20   + cor0.col2 AS 
1c030 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
1c040 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
1c050 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e  cor0.col1, cor0.
1c060 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 34 0d  col2..----..-34.
1c070 0a 32 39 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20  .29..3....query 
1c080 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1c090 54 20 2b 20 36 37 20 46 52 4f 4d 20 74 61 62 32  T + 67 FROM tab2
1c0a0 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
1c0b0 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y cor0.col1..---
1c0c0 2d 0d 0a 36 37 0d 0a 36 37 0d 0a 36 37 0d 0a 0d  -..67..67..67...
1c0d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1c0e0 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 72 30 2e  ..SELECT + cor0.
1c0f0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
1c100 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
1c110 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 6c 30 2c  cor0.col1, col0,
1c120 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   cor0.col0..----
1c130 0d 0a 32 32 0d 0a 32 38 0d 0a 38 32 0d 0a 0d 0a  ..22..28..82....
1c140 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1c150 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 39 35  .SELECT ALL - 95
1c160 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
1c170 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30  b0 GROUP BY tab0
1c180 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 35  .col1..----..-95
1c190 0d 0a 2d 39 35 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-95....query I
1c1a0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1c1b0 20 41 4c 4c 20 2b 20 2d 20 74 61 62 30 2e 63 6f   ALL + - tab0.co
1c1c0 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f  l2 FROM tab0 GRO
1c1d0 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d  UP BY col2..----
1c1e0 0d 0a 2d 32 34 0d 0a 2d 33 38 0d 0a 2d 37 39 0d  ..-24..-38..-79.
1c1f0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1c200 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
1c210 4e 43 54 20 32 37 20 41 53 20 63 6f 6c 32 20 46  NCT 27 AS col2 F
1c220 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
1c230 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab1.col2..---
1c240 2d 0d 0a 32 37 0d 0a 0d 0a 71 75 65 72 79 20 49  -..27....query I
1c250 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1c260 20 2b 20 74 61 62 30 2e 63 6f 6c 30 20 2a 20 2d   + tab0.col0 * -
1c270 20 74 61 62 30 2e 63 6f 6c 30 20 46 52 4f 4d 20   tab0.col0 FROM 
1c280 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61  tab0 GROUP BY ta
1c290 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b0.col0..----..-
1c2a0 31 38 34 39 0d 0a 2d 36 37 36 0d 0a 2d 36 38 38  1849..-676..-688
1c2b0 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
1c2c0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 35  sort..SELECT + 5
1c2d0 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
1c2e0 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d   BY tab2.col1..-
1c2f0 2d 2d 2d 0d 0a 35 0d 0a 35 0d 0a 35 0d 0a 0d 0a  ---..5..5..5....
1c300 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1c310 0a 53 45 4c 45 43 54 20 2d 20 37 38 20 41 53 20  .SELECT - 78 AS 
1c320 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 47  col0 FROM tab0 G
1c330 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c  ROUP BY tab0.col
1c340 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 38 0d 0a 2d 37  1..----..-78..-7
1c350 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  8....query I row
1c360 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 38  sort..SELECT - 8
1c370 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  0 FROM tab2 GROU
1c380 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a  P BY tab2.col2..
1c390 2d 2d 2d 2d 0d 0a 2d 38 30 0d 0a 2d 38 30 0d 0a  ----..-80..-80..
1c3a0 2d 38 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -80....query I r
1c3b0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
1c3c0 49 53 54 49 4e 43 54 20 2d 20 74 61 62 31 2e 63  ISTINCT - tab1.c
1c3d0 6f 6c 30 20 2a 20 2b 20 74 61 62 31 2e 63 6f 6c  ol0 * + tab1.col
1c3e0 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  0 AS col0 FROM t
1c3f0 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
1c400 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34  1.col0..----..-4
1c410 38 34 0d 0a 2d 36 37 32 34 0d 0a 2d 37 38 34 0d  84..-6724..-784.
1c420 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1c430 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e  rt..SELECT cor0.
1c440 63 6f 6c 31 20 2a 20 2d 20 36 35 20 41 53 20 63  col1 * - 65 AS c
1c450 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol0 FROM tab1 AS
1c460 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
1c470 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  or0.col1..----..
1c480 2d 32 38 36 30 0d 0a 2d 33 37 30 35 0d 0a 2d 33  -2860..-3705..-3
1c490 39 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  90....query I ro
1c4a0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
1c4b0 4c 20 2d 20 2b 20 74 61 62 32 2e 63 6f 6c 31 20  L - + tab2.col1 
1c4c0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
1c4d0 32 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d  2 GROUP BY col1.
1c4e0 0a 2d 2d 2d 2d 0d 0a 2d 34 31 0d 0a 2d 35 39 0d  .----..-41..-59.
1c4f0 0a 2d 36 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  .-61....onlyif m
1c500 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
1c510 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
1c520 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
1c530 72 74 20 6c 61 62 65 6c 2d 39 31 32 0d 0a 53 45  rt label-912..SE
1c540 4c 45 43 54 20 41 4c 4c 20 2d 20 37 33 20 44 49  LECT ALL - 73 DI
1c550 56 20 2b 20 74 61 62 32 2e 63 6f 6c 31 20 2b 20  V + tab2.col1 + 
1c560 74 61 62 32 2e 63 6f 6c 31 20 46 52 4f 4d 20 74  tab2.col1 FROM t
1c570 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab2 GROUP BY tab
1c580 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 30  2.col1..----..40
1c590 0d 0a 35 38 0d 0a 36 30 0d 0a 0d 0a 73 6b 69 70  ..58..60....skip
1c5a0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
1c5b0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
1c5c0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1c5d0 2d 39 31 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -912..SELECT ALL
1c5e0 20 2d 20 37 33 20 2f 20 2b 20 74 61 62 32 2e 63   - 73 / + tab2.c
1c5f0 6f 6c 31 20 2b 20 74 61 62 32 2e 63 6f 6c 31 20  ol1 + tab2.col1 
1c600 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
1c610 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab2.col1..--
1c620 2d 2d 0d 0a 34 30 0d 0a 35 38 0d 0a 36 30 0d 0a  --..40..58..60..
1c630 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1c640 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
1c650 38 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  82 FROM tab0 AS 
1c660 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
1c670 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  r0.col1..----..-
1c680 38 32 0d 0a 2d 38 32 0d 0a 0d 0a 71 75 65 72 79  82..-82....query
1c690 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1c6a0 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 72 30  CT DISTINCT cor0
1c6b0 2e 63 6f 6c 30 20 2a 20 36 31 20 41 53 20 63 6f  .col0 * 61 AS co
1c6c0 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l1 FROM tab0 AS 
1c6d0 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
1c6e0 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31  r0.col0..----..1
1c6f0 35 38 36 0d 0a 32 36 32 33 0d 0a 35 30 36 33 0d  586..2623..5063.
1c700 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1c710 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 74  rt..SELECT + + t
1c720 61 62 31 2e 63 6f 6c 31 20 2a 20 74 61 62 31 2e  ab1.col1 * tab1.
1c730 63 6f 6c 31 20 2b 20 35 38 20 41 53 20 63 6f 6c  col1 + 58 AS col
1c740 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  0 FROM tab1 GROU
1c750 50 20 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  P BY col1..----.
1c760 0a 31 39 39 34 0d 0a 33 33 30 37 0d 0a 39 34 0d  .1994..3307..94.
1c770 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1c780 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 74 61 62  rt..SELECT - tab
1c790 32 2e 63 6f 6c 30 20 2b 20 2b 20 34 36 20 41 53  2.col0 + + 46 AS
1c7a0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
1c7b0 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
1c7c0 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 35 0d 0a 2d  l0..----..-45..-
1c7d0 34 36 0d 0a 33 31 0d 0a 0d 0a 71 75 65 72 79 20  46..31....query 
1c7e0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1c7f0 54 20 2d 20 31 32 20 2b 20 2b 20 74 61 62 32 2e  T - 12 + + tab2.
1c800 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 47  col0 FROM tab2 G
1c810 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
1c820 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 37 39 0d 0a  0..----..3..79..
1c830 38 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  80....onlyif mys
1c840 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
1c850 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
1c860 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1c870 20 6c 61 62 65 6c 2d 39 31 38 0d 0a 53 45 4c 45   label-918..SELE
1c880 43 54 20 74 61 62 32 2e 63 6f 6c 32 20 44 49 56  CT tab2.col2 DIV
1c890 20 2d 20 35 20 2b 20 74 61 62 32 2e 63 6f 6c 32   - 5 + tab2.col2
1c8a0 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
1c8b0 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d   BY tab2.col2..-
1c8c0 2d 2d 2d 0d 0a 34 37 0d 0a 36 34 0d 0a 37 30 0d  ---..47..64..70.
1c8d0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
1c8e0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
1c8f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1c900 74 20 6c 61 62 65 6c 2d 39 31 38 0d 0a 53 45 4c  t label-918..SEL
1c910 45 43 54 20 74 61 62 32 2e 63 6f 6c 32 20 2f 20  ECT tab2.col2 / 
1c920 2d 20 35 20 2b 20 74 61 62 32 2e 63 6f 6c 32 20  - 5 + tab2.col2 
1c930 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
1c940 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d  BY tab2.col2..--
1c950 2d 2d 0d 0a 34 37 0d 0a 36 34 0d 0a 37 30 0d 0a  --..47..64..70..
1c960 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1c970 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
1c980 43 54 20 2d 20 74 61 62 30 2e 63 6f 6c 32 20 2a  CT - tab0.col2 *
1c990 20 2d 20 74 61 62 30 2e 63 6f 6c 32 20 46 52 4f   - tab0.col2 FRO
1c9a0 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
1c9b0 74 61 62 30 2e 63 6f 6c 32 20 48 41 56 49 4e 47  tab0.col2 HAVING
1c9c0 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 4f 54   NOT NULL IS NOT
1c9d0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 34 34   NULL..----..144
1c9e0 34 0d 0a 35 37 36 0d 0a 36 32 34 31 0d 0a 0d 0a  4..576..6241....
1c9f0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1ca00 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30  .SELECT ALL col0
1ca10 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
1ca20 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b1 AS cor0 GROUP
1ca30 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 20 48 41   BY cor0.col0 HA
1ca40 56 49 4e 47 20 28 20 4e 55 4c 4c 20 29 20 49 53  VING ( NULL ) IS
1ca50 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
1ca60 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1ca70 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 31 36 20  rt..SELECT + 16 
1ca80 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 47  FROM tab1 cor0 G
1ca90 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
1caa0 32 0d 0a 2d 2d 2d 2d 0d 0a 31 36 0d 0a 31 36 0d  2..----..16..16.
1cab0 0a 31 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .16....query I r
1cac0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
1cad0 49 53 54 49 4e 43 54 20 2d 20 32 31 20 41 53 20  ISTINCT - 21 AS 
1cae0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41  col1 FROM tab1 A
1caf0 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
1cb00 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  cor0.col2..----.
1cb10 0a 2d 32 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-21....query I 
1cb20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1cb30 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 72 30 2e  DISTINCT + cor0.
1cb40 63 6f 6c 30 20 2d 20 30 20 46 52 4f 4d 20 74 61  col0 - 0 FROM ta
1cb50 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b1 AS cor0 GROUP
1cb60 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63   BY cor0.col0, c
1cb70 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32  ol2..----..22..2
1cb80 38 0d 0a 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49  8..82....query I
1cb90 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1cba0 20 41 4c 4c 20 2b 20 34 36 20 46 52 4f 4d 20 74   ALL + 46 FROM t
1cbb0 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
1cbc0 50 20 42 59 20 63 6f 6c 30 2c 20 63 6f 72 30 2e  P BY col0, cor0.
1cbd0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a  col0..----..46..
1cbe0 34 36 0d 0a 34 36 0d 0a 0d 0a 71 75 65 72 79 20  46..46....query 
1cbf0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1cc00 54 20 44 49 53 54 49 4e 43 54 20 2d 20 4e 55 4c  T DISTINCT - NUL
1cc10 4c 49 46 20 28 20 63 6f 72 30 2e 63 6f 6c 30 2c  LIF ( cor0.col0,
1cc20 20 2d 20 63 6f 72 30 2e 63 6f 6c 31 20 2b 20 38   - cor0.col1 + 8
1cc30 31 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  1 ) AS col0 FROM
1cc40 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52   tab1 AS cor0 GR
1cc50 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30  OUP BY cor0.col0
1cc60 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  , col1..----..-2
1cc70 32 0d 0a 2d 32 38 0d 0a 2d 38 32 0d 0a 0d 0a 71  2..-28..-82....q
1cc80 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1cc90 53 45 4c 45 43 54 20 35 39 20 2d 20 2b 20 35 38  SELECT 59 - + 58
1cca0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
1ccb0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
1ccc0 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a  .col2..----..1..
1ccd0 31 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  1..1....skipif p
1cce0 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
1ccf0 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
1cd00 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
1cd10 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
1cd20 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1cd30 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 28 20 2b  ..SELECT - + ( +
1cd40 20 63 6f 6c 31 20 29 20 63 6f 6c 30 20 46 52 4f   col1 ) col0 FRO
1cd50 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
1cd60 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab0.col1..----.
1cd70 0a 2d 38 31 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69  .-81..0....skipi
1cd80 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
1cd90 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
1cda0 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
1cdb0 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
1cdc0 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
1cdd0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 33 33  ort..SELECT - 33
1cde0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
1cdf0 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
1ce00 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   cor0.col1..----
1ce10 0d 0a 2d 33 33 0d 0a 2d 33 33 0d 0a 2d 33 33 0d  ..-33..-33..-33.
1ce20 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1ce30 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
1ce40 4e 43 54 20 2b 20 35 20 2b 20 38 20 41 53 20 63  NCT + 5 + 8 AS c
1ce50 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol0 FROM tab1 GR
1ce60 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 30  OUP BY tab1.col0
1ce70 0d 0a 2d 2d 2d 2d 0d 0a 31 33 0d 0a 0d 0a 6f 6e  ..----..13....on
1ce80 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
1ce90 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
1cea0 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
1ceb0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
1cec0 33 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  30..SELECT DISTI
1ced0 4e 43 54 20 2b 20 43 41 53 54 28 20 63 6f 6c 30  NCT + CAST( col0
1cee0 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 2b   AS SIGNED ) * +
1cef0 20 37 39 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   79 AS col0 FROM
1cf00 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74   tab1 GROUP BY t
1cf10 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab1.col0..----..
1cf20 31 37 33 38 0d 0a 32 32 31 32 0d 0a 36 34 37 38  1738..2212..6478
1cf30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1cf40 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1cf50 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
1cf60 72 74 20 6c 61 62 65 6c 2d 39 33 30 0d 0a 53 45  rt label-930..SE
1cf70 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
1cf80 43 41 53 54 20 28 20 63 6f 6c 30 20 41 53 20 49  CAST ( col0 AS I
1cf90 4e 54 45 47 45 52 20 29 20 2a 20 2b 20 37 39 20  NTEGER ) * + 79 
1cfa0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
1cfb0 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
1cfc0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 37 33 38  col0..----..1738
1cfd0 0d 0a 32 32 31 32 0d 0a 36 34 37 38 0d 0a 0d 0a  ..2212..6478....
1cfe0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1cff0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1d000 20 2b 20 34 36 20 41 53 20 63 6f 6c 31 20 46 52   + 46 AS col1 FR
1d010 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59  OM tab0 GROUP BY
1d020 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   tab0.col0..----
1d030 0d 0a 34 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..46....query I 
1d040 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1d050 44 49 53 54 49 4e 43 54 20 2b 20 33 20 41 53 20  DISTINCT + 3 AS 
1d060 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 47  col0 FROM tab0 G
1d070 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c  ROUP BY tab0.col
1d080 31 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75  1..----..3....qu
1d090 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1d0a0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
1d0b0 6f 72 30 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61  or0.col1 FROM ta
1d0c0 62 30 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  b0 cor0 GROUP BY
1d0d0 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 6c 31   cor0.col1, col1
1d0e0 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 38 31 0d 0a 0d  ..----..0..81...
1d0f0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1d100 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 37 38 20  ..SELECT ALL 78 
1d110 2b 20 2d 20 37 34 20 41 53 20 63 6f 6c 32 20 46  + - 74 AS col2 F
1d120 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42  ROM tab2 GROUP B
1d130 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab2.col2..---
1d140 2d 0d 0a 34 0d 0a 34 0d 0a 34 0d 0a 0d 0a 73 6b  -..4..4..4....sk
1d150 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
1d160 23 20 50 6f 73 74 67 72 65 53 51 4c 20 68 61 73  # PostgreSQL has
1d170 20 73 74 72 69 63 74 20 63 6f 6c 75 6d 6e 20 75   strict column u
1d180 73 61 67 65 20 66 6f 72 20 47 52 4f 55 50 20 42  sage for GROUP B
1d190 59 20 63 6c 61 75 73 65 73 0d 0a 71 75 65 72 79  Y clauses..query
1d1a0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1d1b0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 4f  CT DISTINCT - CO
1d1c0 41 4c 45 53 43 45 20 28 20 35 39 2c 20 74 61 62  ALESCE ( 59, tab
1d1d0 32 2e 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 31  2.col0 ) AS col1
1d1e0 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
1d1f0 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d   BY tab2.col2..-
1d200 2d 2d 2d 0d 0a 2d 35 39 0d 0a 0d 0a 6f 6e 6c 79  ---..-59....only
1d210 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
1d220 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
1d230 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
1d240 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 33 36  owsort label-936
1d250 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20 2d 20 31  ..SELECT - ( - 1
1d260 31 20 29 20 44 49 56 20 2d 20 37 38 20 41 53 20  1 ) DIV - 78 AS 
1d270 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 47  col0 FROM tab0 G
1d280 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c  ROUP BY tab0.col
1d290 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30  2..----..0..0..0
1d2a0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1d2b0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1d2c0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
1d2d0 72 74 20 6c 61 62 65 6c 2d 39 33 36 0d 0a 53 45  rt label-936..SE
1d2e0 4c 45 43 54 20 2d 20 28 20 2d 20 31 31 20 29 20  LECT - ( - 11 ) 
1d2f0 2f 20 2d 20 37 38 20 41 53 20 63 6f 6c 30 20 46  / - 78 AS col0 F
1d300 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42  ROM tab0 GROUP B
1d310 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab0.col2..---
1d320 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75  -..0..0..0....qu
1d330 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1d340 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
1d350 20 2b 20 74 61 62 32 2e 63 6f 6c 31 20 41 53 20   + tab2.col1 AS 
1d360 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 47  col1 FROM tab2 G
1d370 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
1d380 31 0d 0a 2d 2d 2d 2d 0d 0a 34 31 0d 0a 35 39 0d  1..----..41..59.
1d390 0a 36 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .61....query I r
1d3a0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
1d3b0 49 53 54 49 4e 43 54 20 2b 20 2d 20 74 61 62 32  ISTINCT + - tab2
1d3c0 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52  .col1 AS col0 FR
1d3d0 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
1d3e0 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   tab2.col1..----
1d3f0 0d 0a 2d 34 31 0d 0a 2d 35 39 0d 0a 2d 36 31 0d  ..-41..-59..-61.
1d400 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1d410 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 31 35 20  rt..SELECT + 15 
1d420 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 47  FROM tab2 cor0 G
1d430 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
1d440 32 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 31 35 0d  2..----..15..15.
1d450 0a 31 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .15....query I r
1d460 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 33  owsort..SELECT 3
1d470 38 20 2a 20 2d 20 63 6f 72 30 2e 63 6f 6c 32 20  8 * - cor0.col2 
1d480 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
1d490 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
1d4a0 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 30  col2..----..-220
1d4b0 34 0d 0a 2d 33 30 30 32 0d 0a 2d 33 33 30 36 0d  4..-3002..-3306.
1d4c0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1d4d0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
1d4e0 4e 43 54 20 33 36 20 46 52 4f 4d 20 74 61 62 31  NCT 36 FROM tab1
1d4f0 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
1d500 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y cor0.col0..---
1d510 2d 0d 0a 33 36 0d 0a 0d 0a 71 75 65 72 79 20 49  -..36....query I
1d520 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1d530 20 44 49 53 54 49 4e 43 54 20 32 35 20 2b 20 63   DISTINCT 25 + c
1d540 6f 72 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 31  or0.col2 AS col1
1d550 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
1d560 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
1d570 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 30 34  .col2..----..104
1d580 0d 0a 34 39 0d 0a 36 33 0d 0a 0d 0a 71 75 65 72  ..49..63....quer
1d590 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1d5a0 45 43 54 20 44 49 53 54 49 4e 43 54 20 38 33 20  ECT DISTINCT 83 
1d5b0 2a 20 36 32 20 46 52 4f 4d 20 74 61 62 30 20 41  * 62 FROM tab0 A
1d5c0 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
1d5d0 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor0.col0..----.
1d5e0 0a 35 31 34 36 0d 0a 0d 0a 71 75 65 72 79 20 49  .5146....query I
1d5f0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1d600 20 2d 20 34 36 20 2b 20 63 6f 72 30 2e 63 6f 6c   - 46 + cor0.col
1d610 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  1 AS col2 FROM t
1d620 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab0 AS cor0 GROU
1d630 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 2c 20  P BY cor0.col2, 
1d640 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  cor0.col1..----.
1d650 0a 2d 34 36 0d 0a 2d 34 36 0d 0a 33 35 0d 0a 0d  .-46..-46..35...
1d660 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
1d670 43 41 53 54 20 73 79 6e 74 61 78 3a 20 44 45 43  CAST syntax: DEC
1d680 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65  IMAL type: ..que
1d690 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1d6a0 65 6c 2d 39 34 35 0d 0a 53 45 4c 45 43 54 20 43  el-945..SELECT C
1d6b0 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 44 45 43  AST( NULL AS DEC
1d6c0 49 4d 41 4c 20 29 20 41 53 20 63 6f 6c 31 20 46  IMAL ) AS col1 F
1d6d0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
1d6e0 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
1d6f0 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ol2..----..NULL.
1d700 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .NULL..NULL....s
1d710 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
1d720 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
1d730 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1d740 62 65 6c 2d 39 34 35 0d 0a 53 45 4c 45 43 54 20  bel-945..SELECT 
1d750 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 52  CAST ( NULL AS R
1d760 45 41 4c 20 29 20 41 53 20 63 6f 6c 31 20 46 52  EAL ) AS col1 FR
1d770 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
1d780 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
1d790 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  l2..----..NULL..
1d7a0 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75  NULL..NULL....qu
1d7b0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1d7c0 45 4c 45 43 54 20 41 4c 4c 20 63 6f 72 31 2e 63  ELECT ALL cor1.c
1d7d0 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
1d7e0 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 43 52   tab0 AS cor0 CR
1d7f0 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53  OSS JOIN tab1 AS
1d800 20 63 6f 72 31 20 47 52 4f 55 50 20 42 59 20 63   cor1 GROUP BY c
1d810 6f 72 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  or1.col0..----..
1d820 32 32 0d 0a 32 38 0d 0a 38 32 0d 0a 0d 0a 71 75  22..28..82....qu
1d830 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1d840 45 4c 45 43 54 20 41 4c 4c 20 2d 20 32 37 20 41  ELECT ALL - 27 A
1d850 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
1d860 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
1d870 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37 0d 0a  ol0..----..-27..
1d880 2d 32 37 0d 0a 2d 32 37 0d 0a 0d 0a 71 75 65 72  -27..-27....quer
1d890 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1d8a0 45 43 54 20 41 4c 4c 20 2d 20 31 39 20 46 52 4f  ECT ALL - 19 FRO
1d8b0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
1d8c0 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
1d8d0 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 0d 0a 2d 31  2..----..-19..-1
1d8e0 39 0d 0a 2d 31 39 0d 0a 0d 0a 71 75 65 72 79 20  9..-19....query 
1d8f0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1d900 54 20 44 49 53 54 49 4e 43 54 20 2d 20 39 34 20  T DISTINCT - 94 
1d910 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
1d920 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
1d930 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 34 0d  col0..----..-94.
1d940 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1d950 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 38 38 20  rt..SELECT - 88 
1d960 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
1d970 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
1d980 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 38 0d  col1..----..-88.
1d990 0a 2d 38 38 0d 0a 2d 38 38 0d 0a 0d 0a 71 75 65  .-88..-88....que
1d9a0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1d9b0 4c 45 43 54 20 2b 20 74 61 62 30 2e 63 6f 6c 31  LECT + tab0.col1
1d9c0 20 2b 20 74 61 62 30 2e 63 6f 6c 31 20 46 52 4f   + tab0.col1 FRO
1d9d0 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
1d9e0 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab0.col1..----.
1d9f0 0a 30 0d 0a 31 36 32 0d 0a 0d 0a 6f 6e 6c 79 69  .0..162....onlyi
1da00 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
1da10 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
1da20 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
1da30 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 35 32 0d  wsort label-952.
1da40 0a 53 45 4c 45 43 54 20 74 61 62 30 2e 63 6f 6c  .SELECT tab0.col
1da50 31 20 44 49 56 20 36 33 20 2b 20 31 20 46 52 4f  1 DIV 63 + 1 FRO
1da60 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
1da70 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab0.col1..----.
1da80 0a 31 0d 0a 32 0d 0a 0d 0a 73 6b 69 70 69 66 20  .1..2....skipif 
1da90 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
1daa0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
1dab0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 35  rowsort label-95
1dac0 32 0d 0a 53 45 4c 45 43 54 20 74 61 62 30 2e 63  2..SELECT tab0.c
1dad0 6f 6c 31 20 2f 20 36 33 20 2b 20 31 20 46 52 4f  ol1 / 63 + 1 FRO
1dae0 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
1daf0 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab0.col1..----.
1db00 0a 31 0d 0a 32 0d 0a 0d 0a 71 75 65 72 79 20 49  .1..2....query I
1db10 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1db20 20 2d 20 74 61 62 31 2e 63 6f 6c 31 20 2a 20 2d   - tab1.col1 * -
1db30 20 74 61 62 31 2e 63 6f 6c 31 20 41 53 20 63 6f   tab1.col1 AS co
1db40 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45  l1 FROM tab1 WHE
1db50 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 30 20 2b 20  RE NOT - col0 + 
1db60 2d 20 74 61 62 31 2e 63 6f 6c 31 20 2a 20 74 61  - tab1.col1 * ta
1db70 62 31 2e 63 6f 6c 30 20 49 4e 20 28 20 2d 20 74  b1.col0 IN ( - t
1db80 61 62 31 2e 63 6f 6c 30 20 2a 20 74 61 62 31 2e  ab1.col0 * tab1.
1db90 63 6f 6c 30 20 29 20 47 52 4f 55 50 20 42 59 20  col0 ) GROUP BY 
1dba0 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab1.col1..----.
1dbb0 0a 31 39 33 36 0d 0a 33 32 34 39 0d 0a 33 36 0d  .1936..3249..36.
1dbc0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1dbd0 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 74  rt..SELECT ALL t
1dbe0 61 62 30 2e 63 6f 6c 30 20 2a 20 2b 20 74 61 62  ab0.col0 * + tab
1dbf0 30 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  0.col0 FROM tab0
1dc00 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
1dc10 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 34 39 0d  ol0..----..1849.
1dc20 0a 36 37 36 0d 0a 36 38 38 39 0d 0a 0d 0a 71 75  .676..6889....qu
1dc30 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1dc40 45 4c 45 43 54 20 31 38 20 46 52 4f 4d 20 74 61  ELECT 18 FROM ta
1dc50 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30  b0 GROUP BY tab0
1dc60 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 0d  .col0..----..18.
1dc70 0a 31 38 0d 0a 31 38 0d 0a 0d 0a 71 75 65 72 79  .18..18....query
1dc80 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1dc90 43 54 20 2b 20 37 35 20 41 53 20 63 6f 6c 31 20  CT + 75 AS col1 
1dca0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
1dcb0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
1dcc0 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 37 35 0d 0a  col1..----..75..
1dcd0 37 35 0d 0a 37 35 0d 0a 0d 0a 73 6b 69 70 69 66  75..75....skipif
1dce0 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
1dcf0 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
1dd00 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
1dd10 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
1dd20 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
1dd30 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 74  rt..SELECT - - t
1dd40 61 62 30 2e 63 6f 6c 30 20 63 6f 6c 30 20 46 52  ab0.col0 col0 FR
1dd50 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59  OM tab0 GROUP BY
1dd60 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   tab0.col0..----
1dd70 0d 0a 32 36 0d 0a 34 33 0d 0a 38 33 0d 0a 0d 0a  ..26..43..83....
1dd80 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1dd90 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 72 30  .SELECT ALL cor0
1dda0 2e 63 6f 6c 30 20 2b 20 2d 20 63 6f 72 30 2e 63  .col0 + - cor0.c
1ddb0 6f 6c 30 20 2a 20 31 37 20 46 52 4f 4d 20 74 61  ol0 * 17 FROM ta
1ddc0 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
1ddd0 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d   BY cor0.col0..-
1dde0 2d 2d 2d 0d 0a 2d 31 33 32 38 0d 0a 2d 34 31 36  ---..-1328..-416
1ddf0 0d 0a 2d 36 38 38 0d 0a 0d 0a 71 75 65 72 79 20  ..-688....query 
1de00 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1de10 54 20 2d 20 36 35 20 41 53 20 63 6f 6c 31 20 46  T - 65 AS col1 F
1de20 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
1de30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
1de40 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 35 0d 0a  ol0..----..-65..
1de50 2d 36 35 0d 0a 2d 36 35 0d 0a 0d 0a 71 75 65 72  -65..-65....quer
1de60 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1de70 45 43 54 20 2b 20 37 30 20 46 52 4f 4d 20 74 61  ECT + 70 FROM ta
1de80 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32  b2 GROUP BY tab2
1de90 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 37 30 0d  .col0..----..70.
1dea0 0a 37 30 0d 0a 37 30 0d 0a 0d 0a 71 75 65 72 79  .70..70....query
1deb0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1dec0 43 54 20 2d 20 2d 20 39 20 46 52 4f 4d 20 74 61  CT - - 9 FROM ta
1ded0 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30  b0 GROUP BY tab0
1dee0 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a  .col0..----..9..
1def0 39 0d 0a 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  9..9....skipif p
1df00 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
1df10 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
1df20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
1df30 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
1df40 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1df50 0d 0a 53 45 4c 45 43 54 20 2d 20 38 36 20 2b 20  ..SELECT - 86 + 
1df60 2b 20 74 61 62 32 2e 63 6f 6c 30 20 63 6f 6c 30  + tab2.col0 col0
1df70 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
1df80 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d   BY tab2.col0..-
1df90 2d 2d 2d 0d 0a 2d 37 31 0d 0a 35 0d 0a 36 0d 0a  ---..-71..5..6..
1dfa0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1dfb0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
1dfc0 74 61 62 30 2e 63 6f 6c 31 20 2a 20 2b 20 74 61  tab0.col1 * + ta
1dfd0 62 30 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20  b0.col1 AS col2 
1dfe0 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
1dff0 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab0.col1..--
1e000 2d 2d 0d 0a 30 0d 0a 36 35 36 31 0d 0a 0d 0a 71  --..0..6561....q
1e010 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1e020 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1e030 2b 20 2d 20 32 30 20 2a 20 74 61 62 31 2e 63 6f  + - 20 * tab1.co
1e040 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l2 AS col0 FROM 
1e050 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
1e060 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  b1.col2..----..-
1e070 31 34 32 30 0d 0a 2d 31 36 30 0d 0a 2d 39 30 30  1420..-160..-900
1e080 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1e090 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
1e0a0 49 4e 43 54 20 2d 20 74 61 62 30 2e 63 6f 6c 32  INCT - tab0.col2
1e0b0 20 2a 20 74 61 62 30 2e 63 6f 6c 32 20 41 53 20   * tab0.col2 AS 
1e0c0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47  col2 FROM tab0 G
1e0d0 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c  ROUP BY tab0.col
1e0e0 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 34 34 0d 0a  2..----..-1444..
1e0f0 2d 35 37 36 0d 0a 2d 36 32 34 31 0d 0a 0d 0a 71  -576..-6241....q
1e100 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1e110 53 45 4c 45 43 54 20 2b 20 74 61 62 30 2e 63 6f  SELECT + tab0.co
1e120 6c 32 20 2d 20 2b 20 63 6f 6c 32 20 46 52 4f 4d  l2 - + col2 FROM
1e130 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
1e140 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  ab0.col2..----..
1e150 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79  0..0..0....query
1e160 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1e170 43 54 20 32 32 20 2a 20 63 6f 72 30 2e 63 6f 6c  CT 22 * cor0.col
1e180 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  2 FROM tab2 cor0
1e190 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
1e1a0 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 32 37 36 0d  ol2..----..1276.
1e1b0 0a 31 37 33 38 0d 0a 31 39 31 34 0d 0a 0d 0a 6f  .1738..1914....o
1e1c0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
1e1d0 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
1e1e0 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
1e1f0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1e200 39 36 38 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20  968..SELECT - - 
1e210 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
1e220 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 30 20 46  GNED ) AS col0 F
1e230 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42  ROM tab2 GROUP B
1e240 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y tab2.col1..---
1e250 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
1e260 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
1e270 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1e280 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
1e290 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36 38 0d  wsort label-968.
1e2a0 0a 53 45 4c 45 43 54 20 2d 20 2d 20 43 41 53 54  .SELECT - - CAST
1e2b0 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
1e2c0 45 52 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f  ER ) AS col0 FRO
1e2d0 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
1e2e0 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab2.col1..----.
1e2f0 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
1e300 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  L....query I row
1e310 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
1e320 20 28 20 74 61 62 30 2e 63 6f 6c 30 20 29 20 41   ( tab0.col0 ) A
1e330 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
1e340 2c 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47  , tab0 AS cor0 G
1e350 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c  ROUP BY tab0.col
1e360 30 0d 0a 2d 2d 2d 2d 0d 0a 32 36 0d 0a 34 33 0d  0..----..26..43.
1e370 0a 38 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .83....query I r
1e380 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
1e390 49 53 54 49 4e 43 54 20 2d 20 2d 20 31 34 20 46  ISTINCT - - 14 F
1e3a0 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42  ROM tab2 GROUP B
1e3b0 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab2.col2..---
1e3c0 2d 0d 0a 31 34 0d 0a 0d 0a 71 75 65 72 79 20 49  -..14....query I
1e3d0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1e3e0 20 33 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f   3 FROM tab1 GRO
1e3f0 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d  UP BY tab1.col2.
1e400 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 33 0d 0a 33 0d 0a  .----..3..3..3..
1e410 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1e420 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 72 31  t..SELECT - cor1
1e430 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52  .col2 AS col1 FR
1e440 4f 4d 20 74 61 62 30 20 63 6f 72 30 20 43 52 4f  OM tab0 cor0 CRO
1e450 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53 20  SS JOIN tab1 AS 
1e460 63 6f 72 31 20 47 52 4f 55 50 20 42 59 20 63 6f  cor1 GROUP BY co
1e470 72 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  r1.col2..----..-
1e480 34 35 0d 0a 2d 37 31 0d 0a 2d 38 0d 0a 0d 0a 71  45..-71..-8....q
1e490 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1e4a0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1e4b0 39 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f  92 FROM tab0 GRO
1e4c0 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d  UP BY tab0.col2.
1e4d0 0a 2d 2d 2d 2d 0d 0a 39 32 0d 0a 0d 0a 71 75 65  .----..92....que
1e4e0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1e4f0 4c 45 43 54 20 74 61 62 30 2e 63 6f 6c 30 20 2a  LECT tab0.col0 *
1e500 20 2b 20 74 61 62 30 2e 63 6f 6c 30 20 46 52 4f   + tab0.col0 FRO
1e510 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
1e520 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab0.col0..----.
1e530 0a 31 38 34 39 0d 0a 36 37 36 0d 0a 36 38 38 39  .1849..676..6889
1e540 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1e550 6f 72 74 0d 0a 53 45 4c 45 43 54 20 32 38 20 46  ort..SELECT 28 F
1e560 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
1e570 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31   CROSS JOIN tab1
1e580 20 41 53 20 63 6f 72 31 20 47 52 4f 55 50 20 42   AS cor1 GROUP B
1e590 59 20 63 6f 72 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y cor1.col2..---
1e5a0 2d 0d 0a 32 38 0d 0a 32 38 0d 0a 32 38 0d 0a 0d  -..28..28..28...
1e5b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1e5c0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1e5d0 54 20 36 35 20 46 52 4f 4d 20 74 61 62 30 20 41  T 65 FROM tab0 A
1e5e0 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
1e5f0 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e  cor0.col1, cor0.
1e600 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 36 35 0d 0a  col2..----..65..
1e610 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1e620 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 2a  t..SELECT col0 *
1e630 20 2b 20 74 61 62 32 2e 63 6f 6c 30 20 41 53 20   + tab2.col0 AS 
1e640 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 47  col1 FROM tab2 G
1e650 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
1e660 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32 35 0d 0a 38 32  0..----..225..82
1e670 38 31 0d 0a 38 34 36 34 0d 0a 0d 0a 71 75 65 72  81..8464....quer
1e680 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1e690 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b  ECT DISTINCT + +
1e6a0 20 74 61 62 31 2e 63 6f 6c 31 20 41 53 20 63 6f   tab1.col1 AS co
1e6b0 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f  l1 FROM tab1 GRO
1e6c0 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d  UP BY tab1.col1.
1e6d0 0a 2d 2d 2d 2d 0d 0a 34 34 0d 0a 35 37 0d 0a 36  .----..44..57..6
1e6e0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1e6f0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
1e700 49 4e 43 54 20 2d 20 39 35 20 46 52 4f 4d 20 74  INCT - 95 FROM t
1e710 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab0 AS cor0 GROU
1e720 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  P BY cor0.col0..
1e730 2d 2d 2d 2d 0d 0a 2d 39 35 0d 0a 0d 0a 6f 6e 6c  ----..-95....onl
1e740 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
1e750 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
1e760 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
1e770 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 38  rowsort label-98
1e780 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  0..SELECT DISTIN
1e790 43 54 20 63 6f 6c 31 20 44 49 56 20 32 20 46 52  CT col1 DIV 2 FR
1e7a0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
1e7b0 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
1e7c0 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 34 30 0d  l1..----..0..40.
1e7d0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
1e7e0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
1e7f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1e800 74 20 6c 61 62 65 6c 2d 39 38 30 0d 0a 53 45 4c  t label-980..SEL
1e810 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  ECT DISTINCT col
1e820 31 20 2f 20 32 20 46 52 4f 4d 20 74 61 62 30 20  1 / 2 FROM tab0 
1e830 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
1e840 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   cor0.col1..----
1e850 0d 0a 30 0d 0a 34 30 0d 0a 0d 0a 71 75 65 72 79  ..0..40....query
1e860 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1e870 43 54 20 33 37 20 46 52 4f 4d 20 74 61 62 30 20  CT 37 FROM tab0 
1e880 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
1e890 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   cor0.col2..----
1e8a0 0d 0a 33 37 0d 0a 33 37 0d 0a 33 37 0d 0a 0d 0a  ..37..37..37....
1e8b0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
1e8c0 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
1e8d0 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
1e8e0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1e8f0 2d 39 38 32 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  -982..SELECT col
1e900 30 20 2a 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  0 * CAST( NULL A
1e910 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20  S SIGNED ) FROM 
1e920 74 61 62 30 20 63 6f 72 30 20 47 52 4f 55 50 20  tab0 cor0 GROUP 
1e930 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  BY cor0.col0..--
1e940 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
1e950 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  NULL....skipif m
1e960 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1e970 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1e980 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 38 32  owsort label-982
1e990 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 2a 20  ..SELECT col0 * 
1e9a0 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
1e9b0 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61  NTEGER ) FROM ta
1e9c0 62 30 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  b0 cor0 GROUP BY
1e9d0 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   cor0.col0..----
1e9e0 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
1e9f0 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  LL....query I ro
1ea00 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
1ea10 2d 20 74 61 62 30 2e 63 6f 6c 30 20 2d 20 74 61  - tab0.col0 - ta
1ea20 62 30 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  b0.col0 FROM tab
1ea30 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
1ea40 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 36  col0..----..-166
1ea50 0d 0a 2d 35 32 0d 0a 2d 38 36 0d 0a 0d 0a 71 75  ..-52..-86....qu
1ea60 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1ea70 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
1ea80 20 74 61 62 31 2e 63 6f 6c 30 20 2a 20 74 61 62   tab1.col0 * tab
1ea90 31 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46  1.col0 AS col1 F
1eaa0 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
1eab0 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y tab1.col0..---
1eac0 2d 0d 0a 2d 34 38 34 0d 0a 2d 36 37 32 34 0d 0a  -..-484..-6724..
1ead0 2d 37 38 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -784....onlyif m
1eae0 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
1eaf0 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
1eb00 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
1eb10 72 74 20 6c 61 62 65 6c 2d 39 38 35 0d 0a 53 45  rt label-985..SE
1eb20 4c 45 43 54 20 2d 20 63 6f 72 30 2e 63 6f 6c 31  LECT - cor0.col1
1eb30 20 44 49 56 20 33 39 20 46 52 4f 4d 20 74 61 62   DIV 39 FROM tab
1eb40 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  2 AS cor0 GROUP 
1eb50 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d  BY cor0.col1..--
1eb60 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a  --..-1..-1..-1..
1eb70 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1eb80 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1eb90 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1eba0 20 6c 61 62 65 6c 2d 39 38 35 0d 0a 53 45 4c 45   label-985..SELE
1ebb0 43 54 20 2d 20 63 6f 72 30 2e 63 6f 6c 31 20 2f  CT - cor0.col1 /
1ebc0 20 33 39 20 46 52 4f 4d 20 74 61 62 32 20 41 53   39 FROM tab2 AS
1ebd0 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
1ebe0 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  or0.col1..----..
1ebf0 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a 73 6b  -1..-1..-1....sk
1ec00 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
1ec10 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
1ec20 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
1ec30 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
1ec40 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
1ec50 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 74  owsort..SELECT t
1ec60 61 62 31 2e 63 6f 6c 31 20 63 6f 6c 31 20 46 52  ab1.col1 col1 FR
1ec70 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
1ec80 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d   col1..----..44.
1ec90 0a 35 37 0d 0a 36 0d 0a 0d 0a 71 75 65 72 79 20  .57..6....query 
1eca0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1ecb0 54 20 63 6f 72 30 2e 63 6f 6c 32 20 2a 20 2d 20  T cor0.col2 * - 
1ecc0 36 36 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  66 FROM tab2 AS 
1ecd0 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
1ece0 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  r0.col2..----..-
1ecf0 33 38 32 38 0d 0a 2d 35 32 31 34 0d 0a 2d 35 37  3828..-5214..-57
1ed00 34 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  42....query I ro
1ed10 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
1ed20 2d 20 74 61 62 30 2e 63 6f 6c 30 20 2a 20 39 33  - tab0.col0 * 93
1ed30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
1ed40 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30  b0 GROUP BY tab0
1ed50 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34  .col0..----..-24
1ed60 31 38 0d 0a 2d 33 39 39 39 0d 0a 2d 37 37 31 39  18..-3999..-7719
1ed70 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1ed80 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 34 31  ort..SELECT - 41
1ed90 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
1eda0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
1edb0 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 31  .col2..----..-41
1edc0 0d 0a 2d 34 31 0d 0a 2d 34 31 0d 0a 0d 0a 71 75  ..-41..-41....qu
1edd0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1ede0 45 4c 45 43 54 20 33 35 20 41 53 20 63 6f 6c 32  ELECT 35 AS col2
1edf0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
1ee00 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
1ee10 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33 35 0d  .col2..----..35.
1ee20 0a 33 35 0d 0a 33 35 0d 0a 0d 0a 71 75 65 72 79  .35..35....query
1ee30 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1ee40 43 54 20 35 39 20 41 53 20 63 6f 6c 30 20 46 52  CT 59 AS col0 FR
1ee50 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
1ee60 20 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   tab1.col0..----
1ee70 0d 0a 35 39 0d 0a 35 39 0d 0a 35 39 0d 0a 0d 0a  ..59..59..59....
1ee80 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
1ee90 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
1eea0 45 44 20 74 79 70 65 3a 20 44 49 56 20 66 6f 72  ED type: DIV for
1eeb0 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
1eec0 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
1eed0 73 6f 72 74 20 6c 61 62 65 6c 2d 39 39 32 0d 0a  sort label-992..
1eee0 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2b 20 43  SELECT ALL + + C
1eef0 4f 41 4c 45 53 43 45 20 28 20 2b 20 37 31 2c 20  OALESCE ( + 71, 
1ef00 2d 20 74 61 62 30 2e 63 6f 6c 32 20 2d 20 43 41  - tab0.col2 - CA
1ef10 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
1ef20 45 44 20 29 20 44 49 56 20 63 6f 6c 32 2c 20 74  ED ) DIV col2, t
1ef30 61 62 30 2e 63 6f 6c 30 20 29 20 2b 20 2b 20 74  ab0.col0 ) + + t
1ef40 61 62 30 2e 63 6f 6c 30 20 63 6f 6c 30 20 46 52  ab0.col0 col0 FR
1ef50 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59  OM tab0 GROUP BY
1ef60 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   tab0.col0..----
1ef70 0d 0a 31 31 34 0d 0a 31 35 34 0d 0a 39 37 0d 0a  ..114..154..97..
1ef80 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1ef90 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1efa0 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
1efb0 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
1efc0 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
1efd0 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
1efe0 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
1eff0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1f000 39 39 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  992..SELECT ALL 
1f010 2b 20 2b 20 43 4f 41 4c 45 53 43 45 20 28 20 2b  + + COALESCE ( +
1f020 20 37 31 2c 20 2d 20 74 61 62 30 2e 63 6f 6c 32   71, - tab0.col2
1f030 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41   - CAST ( NULL A
1f040 53 20 49 4e 54 45 47 45 52 20 29 20 2f 20 63 6f  S INTEGER ) / co
1f050 6c 32 2c 20 74 61 62 30 2e 63 6f 6c 30 20 29 20  l2, tab0.col0 ) 
1f060 2b 20 2b 20 74 61 62 30 2e 63 6f 6c 30 20 63 6f  + + tab0.col0 co
1f070 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f  l0 FROM tab0 GRO
1f080 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d  UP BY tab0.col0.
1f090 0a 2d 2d 2d 2d 0d 0a 31 31 34 0d 0a 31 35 34 0d  .----..114..154.
1f0a0 0a 39 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .97....query I r
1f0b0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
1f0c0 4c 4c 20 2b 20 63 6f 6c 32 20 2d 20 63 6f 72 30  LL + col2 - cor0
1f0d0 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20  .col2 FROM tab0 
1f0e0 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
1f0f0 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   cor0.col2..----
1f100 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65  ..0..0..0....que
1f110 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1f120 4c 45 43 54 20 2b 20 2d 20 39 36 20 46 52 4f 4d  LECT + - 96 FROM
1f130 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 63   tab1 GROUP BY c
1f140 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 36 0d 0a  ol2..----..-96..
1f150 2d 39 36 0d 0a 2d 39 36 0d 0a 0d 0a 71 75 65 72  -96..-96....quer
1f160 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1f170 45 43 54 20 41 4c 4c 20 2d 20 35 37 20 41 53 20  ECT ALL - 57 AS 
1f180 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
1f190 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
1f1a0 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  cor0.col2..----.
1f1b0 0a 2d 35 37 0d 0a 2d 35 37 0d 0a 2d 35 37 0d 0a  .-57..-57..-57..
1f1c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1f1d0 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 74 61  t..SELECT - + ta
1f1e0 62 31 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  b1.col2 FROM tab
1f1f0 31 2c 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  1, tab0 AS cor0 
1f200 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
1f210 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 35 0d 0a 2d  l2..----..-45..-
1f220 37 31 0d 0a 2d 38 0d 0a 0d 0a 71 75 65 72 79 20  71..-8....query 
1f230 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1f240 54 20 2b 20 2d 20 37 30 20 41 53 20 63 6f 6c 31  T + - 70 AS col1
1f250 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
1f260 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d   BY tab0.col2..-
1f270 2d 2d 2d 0d 0a 2d 37 30 0d 0a 2d 37 30 0d 0a 2d  ---..-70..-70..-
1f280 37 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  70....onlyif mys
1f290 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
1f2a0 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
1f2b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1f2c0 20 6c 61 62 65 6c 2d 39 39 38 0d 0a 53 45 4c 45   label-998..SELE
1f2d0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 34 35  CT DISTINCT - 45
1f2e0 20 2b 20 74 61 62 30 2e 63 6f 6c 32 20 44 49 56   + tab0.col2 DIV
1f2f0 20 2b 20 74 61 62 30 2e 63 6f 6c 32 20 41 53 20   + tab0.col2 AS 
1f300 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47  col2 FROM tab0 G
1f310 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c  ROUP BY tab0.col
1f320 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 34 0d 0a 0d 0a  2..----..-44....
1f330 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1f340 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1f350 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1f360 61 62 65 6c 2d 39 39 38 0d 0a 53 45 4c 45 43 54  abel-998..SELECT
1f370 20 44 49 53 54 49 4e 43 54 20 2d 20 34 35 20 2b   DISTINCT - 45 +
1f380 20 74 61 62 30 2e 63 6f 6c 32 20 2f 20 2b 20 74   tab0.col2 / + t
1f390 61 62 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 32  ab0.col2 AS col2
1f3a0 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
1f3b0 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d   BY tab0.col2..-
1f3c0 2d 2d 2d 0d 0a 2d 34 34 0d 0a 0d 0a 71 75 65 72  ---..-44....quer
1f3d0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1f3e0 45 43 54 20 38 37 20 46 52 4f 4d 20 74 61 62 32  ECT 87 FROM tab2
1f3f0 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
1f400 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  ol0, cor0.col0..
1f410 2d 2d 2d 2d 0d 0a 38 37 0d 0a 38 37 0d 0a 38 37  ----..87..87..87
1f420 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1f430 6f 72 74 0d 0a 53 45 4c 45 43 54 20 35 34 20 46  ort..SELECT 54 F
1f440 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42  ROM tab0 GROUP B
1f450 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y tab0.col1..---
1f460 2d 0d 0a 35 34 0d 0a 35 34 0d 0a 0d 0a 71 75 65  -..54..54....que
1f470 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1f480 4c 45 43 54 20 37 31 20 41 53 20 63 6f 6c 30 20  LECT 71 AS col0 
1f490 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
1f4a0 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab2.col1..--
1f4b0 2d 2d 0d 0a 37 31 0d 0a 37 31 0d 0a 37 31 0d 0a  --..71..71..71..
1f4c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1f4d0 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 63 6f  t..SELECT - - co
1f4e0 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f  l1 FROM tab2 GRO
1f4f0 55 50 20 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d  UP BY col1..----
1f500 0d 0a 34 31 0d 0a 35 39 0d 0a 36 31 0d 0a 0d 0a  ..41..59..61....
1f510 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1f520 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 74 61  .SELECT ALL - ta
1f530 62 32 2e 63 6f 6c 31 20 2a 20 74 61 62 32 2e 63  b2.col1 * tab2.c
1f540 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 47 52  ol1 FROM tab2 GR
1f550 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31  OUP BY tab2.col1
1f560 20 48 41 56 49 4e 47 20 4e 55 4c 4c 20 3c 3e 20   HAVING NULL <> 
1f570 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
1f580 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1f590 45 4c 45 43 54 20 2d 20 74 61 62 32 2e 63 6f 6c  ELECT - tab2.col
1f5a0 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  1 AS col1 FROM t
1f5b0 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab2 GROUP BY tab
1f5c0 32 2e 63 6f 6c 31 20 48 41 56 49 4e 47 20 4e 4f  2.col1 HAVING NO
1f5d0 54 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55  T NULL IS NOT NU
1f5e0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 31 0d 0a 2d  LL..----..-41..-
1f5f0 35 39 0d 0a 2d 36 31 0d 0a 0d 0a 71 75 65 72 79  59..-61....query
1f600 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1f610 43 54 20 41 4c 4c 20 2d 20 28 20 38 36 20 29 20  CT ALL - ( 86 ) 
1f620 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
1f630 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
1f640 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 36 0d  col2..----..-86.
1f650 0a 2d 38 36 0d 0a 2d 38 36 0d 0a 0d 0a 71 75 65  .-86..-86....que
1f660 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1f670 4c 45 43 54 20 37 36 20 2b 20 4e 55 4c 4c 49 46  LECT 76 + NULLIF
1f680 20 28 20 2b 20 32 30 2c 20 2b 20 63 6f 72 30 2e   ( + 20, + cor0.
1f690 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 32 20 46  col1 ) AS col2 F
1f6a0 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 47 52  ROM tab2 cor0 GR
1f6b0 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31  OUP BY cor0.col1
1f6c0 0d 0a 2d 2d 2d 2d 0d 0a 39 36 0d 0a 39 36 0d 0a  ..----..96..96..
1f6d0 39 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  96....query I ro
1f6e0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
1f6f0 4c 20 2b 20 2d 20 37 20 46 52 4f 4d 20 74 61 62  L + - 7 FROM tab
1f700 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
1f710 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 0d 0a  col0..----..-7..
1f720 2d 37 0d 0a 2d 37 0d 0a 0d 0a 73 6b 69 70 69 66  -7..-7....skipif
1f730 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
1f740 73 74 67 72 65 53 51 4c 20 68 61 73 20 73 74 72  stgreSQL has str
1f750 69 63 74 20 63 6f 6c 75 6d 6e 20 75 73 61 67 65  ict column usage
1f760 20 66 6f 72 20 47 52 4f 55 50 20 42 59 20 63 6c   for GROUP BY cl
1f770 61 75 73 65 73 0d 0a 71 75 65 72 79 20 49 20 72  auses..query I r
1f780 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
1f790 4c 4c 20 2d 20 2b 20 43 4f 41 4c 45 53 43 45 20  LL - + COALESCE 
1f7a0 28 20 2b 20 37 33 2c 20 74 61 62 31 2e 63 6f 6c  ( + 73, tab1.col
1f7b0 30 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  0 ) AS col0 FROM
1f7c0 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74   tab1 GROUP BY t
1f7d0 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  ab1.col2..----..
1f7e0 2d 37 33 0d 0a 2d 37 33 0d 0a 2d 37 33 0d 0a 0d  -73..-73..-73...
1f7f0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
1f800 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
1f810 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
1f820 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1f830 6c 2d 31 30 30 39 0d 0a 53 45 4c 45 43 54 20 41  l-1009..SELECT A
1f840 4c 4c 20 2d 20 33 20 44 49 56 20 2d 20 34 34 20  LL - 3 DIV - 44 
1f850 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47  col2 FROM tab1 G
1f860 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
1f870 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30  1..----..0..0..0
1f880 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1f890 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1f8a0 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  e..skipif postgr
1f8b0 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
1f8c0 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
1f8d0 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
1f8e0 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
1f8f0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1f900 6c 2d 31 30 30 39 0d 0a 53 45 4c 45 43 54 20 41  l-1009..SELECT A
1f910 4c 4c 20 2d 20 33 20 2f 20 2d 20 34 34 20 63 6f  LL - 3 / - 44 co
1f920 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f  l2 FROM tab1 GRO
1f930 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d  UP BY tab1.col1.
1f940 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a  .----..0..0..0..
1f950 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1f960 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f  t..SELECT ALL co
1f970 72 30 2e 63 6f 6c 30 20 2a 20 2d 20 34 36 20 41  r0.col0 * - 46 A
1f980 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
1f990 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
1f9a0 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y cor0.col0..---
1f9b0 2d 0d 0a 2d 34 31 38 36 0d 0a 2d 34 32 33 32 0d  -..-4186..-4232.
1f9c0 0a 2d 36 39 30 0d 0a 0d 0a 71 75 65 72 79 20 49  .-690....query I
1f9d0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1f9e0 20 44 49 53 54 49 4e 43 54 20 2b 20 39 32 20 46   DISTINCT + 92 F
1f9f0 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42  ROM tab2 GROUP B
1fa00 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab2.col2..---
1fa10 2d 0d 0a 39 32 0d 0a 0d 0a 71 75 65 72 79 20 49  -..92....query I
1fa20 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1fa30 20 39 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   92 AS col2 FROM
1fa40 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52   tab0 AS cor0 GR
1fa50 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31  OUP BY cor0.col1
1fa60 0d 0a 2d 2d 2d 2d 0d 0a 39 32 0d 0a 39 32 0d 0a  ..----..92..92..
1fa70 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1fa80 74 0d 0a 53 45 4c 45 43 54 20 2d 20 32 33 20 46  t..SELECT - 23 F
1fa90 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20 47 52  ROM tab0 cor0 GR
1faa0 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30  OUP BY cor0.col0
1fab0 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 0d 0a 2d 32 33  ..----..-23..-23
1fac0 0d 0a 2d 32 33 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-23....query I
1fad0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1fae0 20 2b 20 74 61 62 30 2e 63 6f 6c 31 20 2a 20 2d   + tab0.col1 * -
1faf0 20 74 61 62 30 2e 63 6f 6c 31 20 2b 20 2b 20 74   tab0.col1 + + t
1fb00 61 62 30 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 30  ab0.col1 AS col0
1fb10 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
1fb20 20 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a   BY col1..----..
1fb30 2d 36 34 38 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72  -6480..0....quer
1fb40 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1fb50 45 43 54 20 74 61 62 31 2e 63 6f 6c 32 20 2b 20  ECT tab1.col2 + 
1fb60 74 61 62 31 2e 63 6f 6c 32 20 46 52 4f 4d 20 74  tab1.col2 FROM t
1fb70 61 62 31 20 47 52 4f 55 50 20 42 59 20 63 6f 6c  ab1 GROUP BY col
1fb80 32 0d 0a 2d 2d 2d 2d 0d 0a 31 34 32 0d 0a 31 36  2..----..142..16
1fb90 0d 0a 39 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..90....query I 
1fba0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1fbb0 44 49 53 54 49 4e 43 54 20 63 6f 72 30 2e 63 6f  DISTINCT cor0.co
1fbc0 6c 30 20 2d 20 63 6f 72 30 2e 63 6f 6c 30 20 46  l0 - cor0.col0 F
1fbd0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
1fbe0 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
1fbf0 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  ol1, cor0.col0..
1fc00 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79  ----..0....query
1fc10 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1fc20 43 54 20 41 4c 4c 20 2d 20 63 6f 72 30 2e 63 6f  CT ALL - cor0.co
1fc30 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l0 AS col1 FROM 
1fc40 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f  tab0 AS cor0 GRO
1fc50 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c  UP BY cor0.col0,
1fc60 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   cor0.col2..----
1fc70 0d 0a 2d 32 36 0d 0a 2d 34 33 0d 0a 2d 38 33 0d  ..-26..-43..-83.
1fc80 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
1fc90 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
1fca0 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
1fcb0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1fcc0 62 65 6c 2d 31 30 31 38 0d 0a 53 45 4c 45 43 54  bel-1018..SELECT
1fcd0 20 41 4c 4c 20 32 35 20 2d 20 63 6f 72 30 2e 63   ALL 25 - cor0.c
1fce0 6f 6c 30 20 44 49 56 20 63 6f 72 30 2e 63 6f 6c  ol0 DIV cor0.col
1fcf0 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  0 AS col0 FROM t
1fd00 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab1 AS cor0 GROU
1fd10 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  P BY cor0.col0..
1fd20 2d 2d 2d 2d 0d 0a 32 34 0d 0a 32 34 0d 0a 32 34  ----..24..24..24
1fd30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1fd40 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1fd50 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
1fd60 72 74 20 6c 61 62 65 6c 2d 31 30 31 38 0d 0a 53  rt label-1018..S
1fd70 45 4c 45 43 54 20 41 4c 4c 20 32 35 20 2d 20 63  ELECT ALL 25 - c
1fd80 6f 72 30 2e 63 6f 6c 30 20 2f 20 63 6f 72 30 2e  or0.col0 / cor0.
1fd90 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f  col0 AS col0 FRO
1fda0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47  M tab1 AS cor0 G
1fdb0 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
1fdc0 30 0d 0a 2d 2d 2d 2d 0d 0a 32 34 0d 0a 32 34 0d  0..----..24..24.
1fdd0 0a 32 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .24....onlyif my
1fde0 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
1fdf0 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
1fe00 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1fe10 74 20 6c 61 62 65 6c 2d 31 30 31 39 0d 0a 53 45  t label-1019..SE
1fe20 4c 45 43 54 20 41 4c 4c 20 63 6f 72 30 2e 63 6f  LECT ALL cor0.co
1fe30 6c 30 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20  l0 + CAST( NULL 
1fe40 41 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d  AS SIGNED ) FROM
1fe50 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52   tab1 AS cor0 GR
1fe60 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30  OUP BY cor0.col0
1fe70 2c 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  , col0..----..NU
1fe80 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  LL..NULL..NULL..
1fe90 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1fea0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1feb0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1fec0 20 6c 61 62 65 6c 2d 31 30 31 39 0d 0a 53 45 4c   label-1019..SEL
1fed0 45 43 54 20 41 4c 4c 20 63 6f 72 30 2e 63 6f 6c  ECT ALL cor0.col
1fee0 30 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  0 + CAST ( NULL 
1fef0 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f  AS INTEGER ) FRO
1ff00 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47  M tab1 AS cor0 G
1ff10 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
1ff20 30 2c 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  0, col0..----..N
1ff30 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ULL..NULL..NULL.
1ff40 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1ff50 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 38 38 20  rt..SELECT - 88 
1ff60 2b 20 63 6f 6c 30 20 2a 20 39 34 20 46 52 4f 4d  + col0 * 94 FROM
1ff70 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
1ff80 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0.col0..----..
1ff90 32 33 35 36 0d 0a 33 39 35 34 0d 0a 37 37 31 34  2356..3954..7714
1ffa0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1ffb0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 39 20 2b 20  ort..SELECT 9 + 
1ffc0 32 34 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  24 AS col2 FROM 
1ffd0 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
1ffe0 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 33  b1.col0..----..3
1fff0 33 0d 0a 33 33 0d 0a 33 33 0d 0a 0d 0a 71 75 65  3..33..33....que
20000 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
20010 4c 45 43 54 20 2d 20 2d 20 37 33 20 2b 20 63 6f  LECT - - 73 + co
20020 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f  l0 FROM tab1 GRO
20030 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 30 0d  UP BY tab1.col0.
20040 0a 2d 2d 2d 2d 0d 0a 31 30 31 0d 0a 31 35 35 0d  .----..101..155.
20050 0a 39 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .95....query I r
20060 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
20070 4c 4c 20 32 33 20 41 53 20 63 6f 6c 32 20 46 52  LL 23 AS col2 FR
20080 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
20090 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
200a0 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 32 33  l0..----..23..23
200b0 0d 0a 32 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..23....query I 
200c0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
200d0 41 4c 4c 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30  ALL col2 AS col0
200e0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
200f0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
20100 2e 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 31  .col2, cor0.col1
20110 0d 0a 2d 2d 2d 2d 0d 0a 32 34 0d 0a 33 38 0d 0a  ..----..24..38..
20120 37 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  79....query I ro
20130 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 36 38  wsort..SELECT 68
20140 20 2a 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c   * - col2 AS col
20150 30 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30  0 FROM tab0 cor0
20160 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
20170 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 33 32  ol2..----..-1632
20180 0d 0a 2d 32 35 38 34 0d 0a 2d 35 33 37 32 0d 0a  ..-2584..-5372..
20190 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
201a0 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
201b0 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
201c0 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
201d0 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
201e0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
201f0 43 54 20 2d 20 2d 20 31 39 20 63 6f 6c 31 20 46  CT - - 19 col1 F
20200 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42  ROM tab2 GROUP B
20210 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y tab2.col1..---
20220 2d 0d 0a 31 39 0d 0a 31 39 0d 0a 31 39 0d 0a 0d  -..19..19..19...
20230 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
20240 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 37  ..SELECT ALL - 7
20250 35 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  5 AS col2 FROM t
20260 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
20270 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a  P BY cor0.col2..
20280 2d 2d 2d 2d 0d 0a 2d 37 35 0d 0a 2d 37 35 0d 0a  ----..-75..-75..
20290 2d 37 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -75....query I r
202a0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
202b0 49 53 54 49 4e 43 54 20 2d 20 63 6f 72 30 2e 63  ISTINCT - cor0.c
202c0 6f 6c 32 20 2a 20 33 31 20 46 52 4f 4d 20 74 61  ol2 * 31 FROM ta
202d0 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
202e0 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d   BY cor0.col2..-
202f0 2d 2d 2d 0d 0a 2d 31 31 37 38 0d 0a 2d 32 34 34  ---..-1178..-244
20300 39 0d 0a 2d 37 34 34 0d 0a 0d 0a 71 75 65 72 79  9..-744....query
20310 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
20320 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20  CT DISTINCT - + 
20330 38 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  8 AS col2 FROM t
20340 61 62 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c  ab0 GROUP BY col
20350 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 0d 0a 0d 0a 71  2..----..-8....q
20360 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
20370 53 45 4c 45 43 54 20 39 20 2a 20 63 6f 72 30 2e  SELECT 9 * cor0.
20380 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
20390 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
203a0 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  cor0.col1..----.
203b0 0a 33 36 39 0d 0a 35 33 31 0d 0a 35 34 39 0d 0a  .369..531..549..
203c0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
203d0 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
203e0 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
203f0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
20400 65 6c 2d 31 30 33 31 0d 0a 53 45 4c 45 43 54 20  el-1031..SELECT 
20410 44 49 53 54 49 4e 43 54 20 43 41 53 54 28 20 4e  DISTINCT CAST( N
20420 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
20430 2f 20 2d 20 63 6f 72 30 2e 63 6f 6c 31 20 46 52  / - cor0.col1 FR
20440 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
20450 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a 2d  GROUP BY col1..-
20460 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ---..NULL....ski
20470 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
20480 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
20490 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
204a0 6c 2d 31 30 33 31 0d 0a 53 45 4c 45 43 54 20 44  l-1031..SELECT D
204b0 49 53 54 49 4e 43 54 20 43 41 53 54 20 28 20 4e  ISTINCT CAST ( N
204c0 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
204d0 20 2f 20 2d 20 63 6f 72 30 2e 63 6f 6c 31 20 46   / - cor0.col1 F
204e0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
204f0 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a   GROUP BY col1..
20500 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  ----..NULL....sk
20510 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
20520 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
20530 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
20540 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
20550 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
20560 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
20570 20 2b 20 74 61 62 30 2e 63 6f 6c 31 20 63 6f 6c   + tab0.col1 col
20580 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55  2 FROM tab0 GROU
20590 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a  P BY tab0.col1..
205a0 2d 2d 2d 2d 0d 0a 30 0d 0a 38 31 0d 0a 0d 0a 71  ----..0..81....q
205b0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
205c0 53 45 4c 45 43 54 20 74 61 62 31 2e 63 6f 6c 30  SELECT tab1.col0
205d0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
205e0 62 31 2c 20 74 61 62 30 20 41 53 20 63 6f 72 30  b1, tab0 AS cor0
205f0 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
20600 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32  ol0..----..22..2
20610 38 0d 0a 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49  8..82....query I
20620 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
20630 20 44 49 53 54 49 4e 43 54 20 2b 20 34 37 20 46   DISTINCT + 47 F
20640 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 47 52  ROM tab2 cor0 GR
20650 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31  OUP BY cor0.col1
20660 0d 0a 2d 2d 2d 2d 0d 0a 34 37 0d 0a 0d 0a 71 75  ..----..47....qu
20670 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
20680 45 4c 45 43 54 20 41 4c 4c 20 37 35 20 46 52 4f  ELECT ALL 75 FRO
20690 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
206a0 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab0.col1..----.
206b0 0a 37 35 0d 0a 37 35 0d 0a 0d 0a 71 75 65 72 79  .75..75....query
206c0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
206d0 43 54 20 2b 20 28 20 2d 20 74 61 62 32 2e 63 6f  CT + ( - tab2.co
206e0 6c 30 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  l0 ) AS col1 FRO
206f0 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
20700 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab2.col0..----.
20710 0a 2d 31 35 0d 0a 2d 39 31 0d 0a 2d 39 32 0d 0a  .-15..-91..-92..
20720 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
20730 74 0d 0a 53 45 4c 45 43 54 20 2d 20 32 31 20 46  t..SELECT - 21 F
20740 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
20750 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab1.col2..---
20760 2d 0d 0a 2d 32 31 0d 0a 2d 32 31 0d 0a 2d 32 31  -..-21..-21..-21
20770 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
20780 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
20790 2d 20 2d 20 38 38 20 41 53 20 63 6f 6c 31 20 46  - - 88 AS col1 F
207a0 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
207b0 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y tab1.col0..---
207c0 2d 0d 0a 38 38 0d 0a 38 38 0d 0a 38 38 0d 0a 0d  -..88..88..88...
207d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
207e0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
207f0 54 20 2b 20 33 35 20 46 52 4f 4d 20 74 61 62 30  T + 35 FROM tab0
20800 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
20810 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33 35 0d 0a 0d  ol2..----..35...
20820 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
20830 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
20840 54 20 2b 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20  T + + col0 FROM 
20850 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61  tab2 GROUP BY ta
20860 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31  b2.col0..----..1
20870 35 0d 0a 39 31 0d 0a 39 32 0d 0a 0d 0a 71 75 65  5..91..92....que
20880 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
20890 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
208a0 63 6f 72 30 2e 63 6f 6c 31 20 46 52 4f 4d 20 74  cor0.col1 FROM t
208b0 61 62 32 20 41 53 20 63 6f 72 30 20 43 52 4f 53  ab2 AS cor0 CROS
208c0 53 20 4a 4f 49 4e 20 74 61 62 32 20 41 53 20 63  S JOIN tab2 AS c
208d0 6f 72 31 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or1 GROUP BY cor
208e0 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 31  0.col1..----..41
208f0 0d 0a 35 39 0d 0a 36 31 0d 0a 0d 0a 71 75 65 72  ..59..61....quer
20900 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
20910 45 43 54 20 44 49 53 54 49 4e 43 54 20 36 20 46  ECT DISTINCT 6 F
20920 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
20930 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
20940 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a 0d 0a  ol1..----..6....
20950 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
20960 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
20970 20 2d 20 63 6f 72 30 2e 63 6f 6c 30 20 2a 20 63   - cor0.col0 * c
20980 6f 72 30 2e 63 6f 6c 30 20 2d 20 63 6f 72 30 2e  or0.col0 - cor0.
20990 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
209a0 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
209b0 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor0.col0..----.
209c0 0a 2d 32 34 30 0d 0a 2d 38 33 37 32 0d 0a 2d 38  .-240..-8372..-8
209d0 35 35 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  556....query I r
209e0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
209f0 4c 4c 20 2b 20 38 30 20 46 52 4f 4d 20 74 61 62  LL + 80 FROM tab
20a00 31 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49  1 cor0 CROSS JOI
20a10 4e 20 74 61 62 31 20 41 53 20 63 6f 72 31 20 47  N tab1 AS cor1 G
20a20 52 4f 55 50 20 42 59 20 63 6f 72 31 2e 63 6f 6c  ROUP BY cor1.col
20a30 30 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  0, cor0.col0..--
20a40 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
20a50 68 69 6e 67 20 74 6f 20 38 37 38 66 30 31 32 64  hing to 878f012d
20a60 37 30 37 61 61 62 31 31 33 63 65 64 61 66 35 36  707aab113cedaf56
20a70 65 36 63 35 32 65 39 34 0d 0a 0d 0a 73 6b 69 70  e6c52e94....skip
20a80 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
20a90 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
20aa0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
20ab0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
20ac0 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
20ad0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
20ae0 54 49 4e 43 54 20 2b 20 63 6f 72 30 2e 63 6f 6c  TINCT + cor0.col
20af0 32 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  2 col2 FROM tab0
20b00 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
20b10 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72  Y cor0.col0, cor
20b20 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32 34  0.col2..----..24
20b30 0d 0a 33 38 0d 0a 37 39 0d 0a 0d 0a 71 75 65 72  ..38..79....quer
20b40 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
20b50 45 43 54 20 2d 20 74 61 62 31 2e 63 6f 6c 31 20  ECT - tab1.col1 
20b60 2a 20 39 33 20 41 53 20 63 6f 6c 32 20 46 52 4f  * 93 AS col2 FRO
20b70 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
20b80 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab1.col1..----.
20b90 0a 2d 34 30 39 32 0d 0a 2d 35 33 30 31 0d 0a 2d  .-4092..-5301..-
20ba0 35 35 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  558....query I r
20bb0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
20bc0 20 74 61 62 31 2e 63 6f 6c 30 20 2b 20 2d 20 74   tab1.col0 + - t
20bd0 61 62 31 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61  ab1.col0 FROM ta
20be0 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31  b1 GROUP BY tab1
20bf0 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a  .col0..----..0..
20c00 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  0..0....query I 
20c10 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
20c20 2d 20 43 41 53 45 20 39 36 20 57 48 45 4e 20 63  - CASE 96 WHEN c
20c30 6f 72 30 2e 63 6f 6c 31 20 2a 20 63 6f 6c 31 20  or0.col1 * col1 
20c40 54 48 45 4e 20 4e 55 4c 4c 20 45 4c 53 45 20 34  THEN NULL ELSE 4
20c50 31 20 45 4e 44 20 46 52 4f 4d 20 74 61 62 32 20  1 END FROM tab2 
20c60 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
20c70 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   cor0.col1..----
20c80 0d 0a 2d 34 31 0d 0a 2d 34 31 0d 0a 2d 34 31 0d  ..-41..-41..-41.
20c90 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
20ca0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
20cb0 4e 43 54 20 28 20 33 34 20 29 20 41 53 20 63 6f  NCT ( 34 ) AS co
20cc0 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72  l2 FROM tab0 cor
20cd0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
20ce0 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33 34 0d 0a  col2..----..34..
20cf0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
20d00 74 0d 0a 53 45 4c 45 43 54 20 2d 20 36 36 20 41  t..SELECT - 66 A
20d10 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
20d20 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
20d30 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y cor0.col0..---
20d40 2d 0d 0a 2d 36 36 0d 0a 2d 36 36 0d 0a 2d 36 36  -..-66..-66..-66
20d50 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
20d60 6f 72 74 0d 0a 53 45 4c 45 43 54 20 38 33 20 41  ort..SELECT 83 A
20d70 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
20d80 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
20d90 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y cor0.col2..---
20da0 2d 0d 0a 38 33 0d 0a 38 33 0d 0a 38 33 0d 0a 0d  -..83..83..83...
20db0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
20dc0 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
20dd0 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
20de0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
20df0 6c 2d 31 30 35 32 0d 0a 53 45 4c 45 43 54 20 2d  l-1052..SELECT -
20e00 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
20e10 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62  IGNED ) FROM tab
20e20 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
20e30 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  col0..----..NULL
20e40 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..NULL..NULL....
20e50 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
20e60 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
20e70 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
20e80 61 62 65 6c 2d 31 30 35 32 0d 0a 53 45 4c 45 43  abel-1052..SELEC
20e90 54 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  T - CAST ( NULL 
20ea0 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f  AS INTEGER ) FRO
20eb0 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
20ec0 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab2.col0..----.
20ed0 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
20ee0 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  L....onlyif mysq
20ef0 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
20f00 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
20f10 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
20f20 6c 61 62 65 6c 2d 31 30 35 33 0d 0a 53 45 4c 45  label-1053..SELE
20f30 43 54 20 41 4c 4c 20 2d 20 74 61 62 32 2e 63 6f  CT ALL - tab2.co
20f40 6c 30 20 44 49 56 20 37 32 20 41 53 20 63 6f 6c  l0 DIV 72 AS col
20f50 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  0 FROM tab2 GROU
20f60 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a  P BY tab2.col0..
20f70 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 30 0d  ----..-1..-1..0.
20f80 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
20f90 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
20fa0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
20fb0 74 20 6c 61 62 65 6c 2d 31 30 35 33 0d 0a 53 45  t label-1053..SE
20fc0 4c 45 43 54 20 41 4c 4c 20 2d 20 74 61 62 32 2e  LECT ALL - tab2.
20fd0 63 6f 6c 30 20 2f 20 37 32 20 41 53 20 63 6f 6c  col0 / 72 AS col
20fe0 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  0 FROM tab2 GROU
20ff0 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a  P BY tab2.col0..
21000 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 30 0d  ----..-1..-1..0.
21010 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
21020 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
21030 4e 43 54 20 2b 20 63 6f 72 30 2e 63 6f 6c 30 20  NCT + cor0.col0 
21040 2b 20 2b 20 28 20 33 20 29 20 46 52 4f 4d 20 74  + + ( 3 ) FROM t
21050 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab0 AS cor0 GROU
21060 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  P BY cor0.col0..
21070 2d 2d 2d 2d 0d 0a 32 39 0d 0a 34 36 0d 0a 38 36  ----..29..46..86
21080 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
21090 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
210a0 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
210b0 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
210c0 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
210d0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
210e0 4c 45 43 54 20 41 4c 4c 20 2b 20 31 33 20 63 6f  LECT ALL + 13 co
210f0 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l1 FROM tab2 AS 
21100 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
21110 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31  r0.col1..----..1
21120 33 0d 0a 31 33 0d 0a 31 33 0d 0a 0d 0a 71 75 65  3..13..13....que
21130 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
21140 4c 45 43 54 20 41 4c 4c 20 2d 20 37 33 20 46 52  LECT ALL - 73 FR
21150 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
21160 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 33   col1..----..-73
21170 0d 0a 2d 37 33 0d 0a 2d 37 33 0d 0a 0d 0a 73 6b  ..-73..-73....sk
21180 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
21190 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
211a0 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
211b0 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
211c0 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
211d0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
211e0 20 63 6f 72 30 2e 63 6f 6c 31 20 63 6f 6c 32 20   cor0.col1 col2 
211f0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
21200 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
21210 63 6f 6c 32 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d  col2, col1..----
21220 0d 0a 34 34 0d 0a 35 37 0d 0a 36 0d 0a 0d 0a 6f  ..44..57..6....o
21230 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
21240 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
21250 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
21260 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
21270 31 30 35 38 0d 0a 53 45 4c 45 43 54 20 44 49 53  1058..SELECT DIS
21280 54 49 4e 43 54 20 63 6f 72 30 2e 63 6f 6c 32 20  TINCT cor0.col2 
21290 44 49 56 20 63 6f 72 30 2e 63 6f 6c 32 20 41 53  DIV cor0.col2 AS
212a0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
212b0 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
212c0 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   cor0.col2..----
212d0 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..1....skipif my
212e0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
212f0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
21300 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 35 38  wsort label-1058
21310 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
21320 54 20 63 6f 72 30 2e 63 6f 6c 32 20 2f 20 63 6f  T cor0.col2 / co
21330 72 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20  r0.col2 AS col1 
21340 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
21350 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
21360 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d  col2..----..1...
21370 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
21380 0d 0a 53 45 4c 45 43 54 20 63 6f 72 31 2e 63 6f  ..SELECT cor1.co
21390 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
213a0 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
213b0 74 61 62 31 20 63 6f 72 31 20 47 52 4f 55 50 20  tab1 cor1 GROUP 
213c0 42 59 20 63 6f 72 31 2e 63 6f 6c 32 0d 0a 2d 2d  BY cor1.col2..--
213d0 2d 2d 0d 0a 34 35 0d 0a 37 31 0d 0a 38 0d 0a 0d  --..45..71..8...
213e0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
213f0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
21400 54 20 2d 20 74 61 62 31 2e 63 6f 6c 32 20 46 52  T - tab1.col2 FR
21410 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
21420 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 35   col2..----..-45
21430 0d 0a 2d 37 31 0d 0a 2d 38 0d 0a 0d 0a 71 75 65  ..-71..-8....que
21440 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
21450 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
21460 2d 20 63 6f 72 30 2e 63 6f 6c 30 20 41 53 20 63  - cor0.col0 AS c
21470 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 2c 20 74  ol0 FROM tab1, t
21480 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
21490 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  P BY cor0.col0..
214a0 2d 2d 2d 2d 0d 0a 2d 31 35 0d 0a 2d 39 31 0d 0a  ----..-15..-91..
214b0 2d 39 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -92....query I r
214c0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
214d0 49 53 54 49 4e 43 54 20 36 38 20 46 52 4f 4d 20  ISTINCT 68 FROM 
214e0 74 61 62 30 2c 20 74 61 62 30 20 63 6f 72 30 20  tab0, tab0 cor0 
214f0 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
21500 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 36 38 0d 0a 0d 0a  l0..----..68....
21510 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
21520 0a 53 45 4c 45 43 54 20 35 33 20 41 53 20 63 6f  .SELECT 53 AS co
21530 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f  l1 FROM tab2 GRO
21540 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d  UP BY tab2.col1.
21550 0a 2d 2d 2d 2d 0d 0a 35 33 0d 0a 35 33 0d 0a 35  .----..53..53..5
21560 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
21570 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 37 38 20  sort..SELECT 78 
21580 2b 20 74 61 62 30 2e 63 6f 6c 32 20 41 53 20 63  + tab0.col2 AS c
21590 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol1 FROM tab0 GR
215a0 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32  OUP BY tab0.col2
215b0 0d 0a 2d 2d 2d 2d 0d 0a 31 30 32 0d 0a 31 31 36  ..----..102..116
215c0 0d 0a 31 35 37 0d 0a 0d 0a 71 75 65 72 79 20 49  ..157....query I
215d0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
215e0 20 2d 20 33 33 20 46 52 4f 4d 20 74 61 62 32 20   - 33 FROM tab2 
215f0 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
21600 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 33 0d 0a 2d  l0..----..-33..-
21610 33 33 0d 0a 2d 33 33 0d 0a 0d 0a 71 75 65 72 79  33..-33....query
21620 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
21630 43 54 20 2b 20 32 39 20 41 53 20 63 6f 6c 31 20  CT + 29 AS col1 
21640 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
21650 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d  BY tab2.col0..--
21660 2d 2d 0d 0a 32 39 0d 0a 32 39 0d 0a 32 39 0d 0a  --..29..29..29..
21670 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
21680 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
21690 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
216a0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
216b0 65 6c 2d 31 30 36 37 0d 0a 53 45 4c 45 43 54 20  el-1067..SELECT 
216c0 2d 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  - - CAST( NULL A
216d0 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20  S SIGNED ) FROM 
216e0 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
216f0 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 4e  b1.col1..----..N
21700 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ULL..NULL..NULL.
21710 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
21720 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
21730 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
21740 74 20 6c 61 62 65 6c 2d 31 30 36 37 0d 0a 53 45  t label-1067..SE
21750 4c 45 43 54 20 2d 20 2d 20 43 41 53 54 20 28 20  LECT - - CAST ( 
21760 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
21770 29 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  ) FROM tab1 GROU
21780 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a  P BY tab1.col1..
21790 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
217a0 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20  ..NULL....query 
217b0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
217c0 54 20 41 4c 4c 20 36 33 20 2a 20 2b 20 32 38 20  T ALL 63 * + 28 
217d0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
217e0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
217f0 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 37 36 34  col1..----..1764
21800 0d 0a 31 37 36 34 0d 0a 31 37 36 34 0d 0a 0d 0a  ..1764..1764....
21810 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
21820 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 31  .SELECT ALL col1
21830 20 2b 20 43 41 53 45 20 2b 20 63 6f 72 30 2e 63   + CASE + cor0.c
21840 6f 6c 31 20 2b 20 63 6f 72 30 2e 63 6f 6c 32 20  ol1 + cor0.col2 
21850 2a 20 2d 20 63 6f 72 30 2e 63 6f 6c 31 20 57 48  * - cor0.col1 WH
21860 45 4e 20 2b 20 43 4f 41 4c 45 53 43 45 20 28 20  EN + COALESCE ( 
21870 63 6f 72 30 2e 63 6f 6c 32 2c 20 2b 20 63 6f 72  cor0.col2, + cor
21880 30 2e 63 6f 6c 32 20 2f 20 2d 20 37 37 20 29 20  0.col2 / - 77 ) 
21890 54 48 45 4e 20 28 20 35 39 20 29 20 45 4c 53 45  THEN ( 59 ) ELSE
218a0 20 2b 20 63 6f 72 30 2e 63 6f 6c 32 20 45 4e 44   + cor0.col2 END
218b0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
218c0 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
218d0 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63   BY cor0.col1, c
218e0 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  or0.col2..----..
218f0 31 30 35 0d 0a 33 38 0d 0a 37 39 0d 0a 0d 0a 71  105..38..79....q
21900 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
21910 53 45 4c 45 43 54 20 2b 20 63 6f 72 30 2e 63 6f  SELECT + cor0.co
21920 6c 31 20 2b 20 2b 20 63 6f 72 30 2e 63 6f 6c 31  l1 + + cor0.col1
21930 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
21940 62 32 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  b2 cor0 GROUP BY
21950 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30   cor0.col1, cor0
21960 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 38  .col0..----..118
21970 0d 0a 31 32 32 0d 0a 38 32 0d 0a 0d 0a 71 75 65  ..122..82....que
21980 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
21990 4c 45 43 54 20 28 20 74 61 62 32 2e 63 6f 6c 31  LECT ( tab2.col1
219a0 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
219b0 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61  tab2 GROUP BY ta
219c0 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34  b2.col1..----..4
219d0 31 0d 0a 35 39 0d 0a 36 31 0d 0a 0d 0a 6f 6e 6c  1..59..61....onl
219e0 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
219f0 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
21a00 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
21a10 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
21a20 37 32 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 35  72..SELECT + - 5
21a30 30 20 44 49 56 20 2b 20 74 61 62 31 2e 63 6f 6c  0 DIV + tab1.col
21a40 31 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  1 FROM tab1 GROU
21a50 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a  P BY tab1.col1..
21a60 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 38 0d 0a 30 0d  ----..-1..-8..0.
21a70 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
21a80 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
21a90 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
21aa0 74 20 6c 61 62 65 6c 2d 31 30 37 32 0d 0a 53 45  t label-1072..SE
21ab0 4c 45 43 54 20 2b 20 2d 20 35 30 20 2f 20 2b 20  LECT + - 50 / + 
21ac0 74 61 62 31 2e 63 6f 6c 31 20 46 52 4f 4d 20 74  tab1.col1 FROM t
21ad0 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
21ae0 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  1.col1..----..-1
21af0 0d 0a 2d 38 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79  ..-8..0....query
21b00 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
21b10 43 54 20 63 6f 72 30 2e 63 6f 6c 32 20 2a 20 37  CT cor0.col2 * 7
21b20 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  0 AS col2 FROM t
21b30 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
21b40 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a  P BY cor0.col2..
21b50 2d 2d 2d 2d 0d 0a 34 30 36 30 0d 0a 35 35 33 30  ----..4060..5530
21b60 0d 0a 36 30 39 30 0d 0a 0d 0a 71 75 65 72 79 20  ..6090....query 
21b70 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
21b80 54 20 2d 20 2b 20 74 61 62 32 2e 63 6f 6c 30 20  T - + tab2.col0 
21b90 2a 20 35 37 20 46 52 4f 4d 20 74 61 62 32 20 47  * 57 FROM tab2 G
21ba0 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
21bb0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 38 37 0d 0a  0..----..-5187..
21bc0 2d 35 32 34 34 0d 0a 2d 38 35 35 0d 0a 0d 0a 6f  -5244..-855....o
21bd0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
21be0 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
21bf0 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
21c00 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
21c10 31 30 37 35 0d 0a 53 45 4c 45 43 54 20 2d 20 74  1075..SELECT - t
21c20 61 62 30 2e 63 6f 6c 32 20 44 49 56 20 2b 20 74  ab0.col2 DIV + t
21c30 61 62 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 31  ab0.col2 AS col1
21c40 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
21c50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d   BY tab0.col2..-
21c60 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d  ---..-1..-1..-1.
21c70 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
21c80 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
21c90 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
21ca0 74 20 6c 61 62 65 6c 2d 31 30 37 35 0d 0a 53 45  t label-1075..SE
21cb0 4c 45 43 54 20 2d 20 74 61 62 30 2e 63 6f 6c 32  LECT - tab0.col2
21cc0 20 2f 20 2b 20 74 61 62 30 2e 63 6f 6c 32 20 41   / + tab0.col2 A
21cd0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
21ce0 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
21cf0 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d  ol2..----..-1..-
21d00 31 0d 0a 2d 31 0d 0a 0d 0a 71 75 65 72 79 20 49  1..-1....query I
21d10 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
21d20 20 41 4c 4c 20 2d 20 35 38 20 41 53 20 63 6f 6c   ALL - 58 AS col
21d30 32 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30  2 FROM tab1 cor0
21d40 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
21d50 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a  ol1, cor0.col1..
21d60 2d 2d 2d 2d 0d 0a 2d 35 38 0d 0a 2d 35 38 0d 0a  ----..-58..-58..
21d70 2d 35 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  -58....onlyif my
21d80 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
21d90 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
21da0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
21db0 74 20 6c 61 62 65 6c 2d 31 30 37 37 0d 0a 53 45  t label-1077..SE
21dc0 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c 30 20 44  LECT cor0.col0 D
21dd0 49 56 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 41  IV + cor0.col1 A
21de0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
21df0 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
21e00 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72  Y cor0.col0, cor
21e10 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c  0.col1, cor0.col
21e20 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a 32  0..----..0..1..2
21e30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
21e40 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
21e50 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
21e60 72 74 20 6c 61 62 65 6c 2d 31 30 37 37 0d 0a 53  rt label-1077..S
21e70 45 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c 30 20  ELECT cor0.col0 
21e80 2f 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 41 53  / + cor0.col1 AS
21e90 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
21ea0 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
21eb0 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30   cor0.col0, cor0
21ec0 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 30  .col1, cor0.col0
21ed0 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a 32 0d  ..----..0..1..2.
21ee0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
21ef0 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
21f00 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
21f10 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
21f20 62 65 6c 2d 31 30 37 38 0d 0a 53 45 4c 45 43 54  bel-1078..SELECT
21f30 20 32 36 20 44 49 56 20 2b 20 74 61 62 32 2e 63   26 DIV + tab2.c
21f40 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 47 52  ol1 FROM tab2 GR
21f50 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31  OUP BY tab2.col1
21f60 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d  ..----..0..0..0.
21f70 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
21f80 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
21f90 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
21fa0 74 20 6c 61 62 65 6c 2d 31 30 37 38 0d 0a 53 45  t label-1078..SE
21fb0 4c 45 43 54 20 32 36 20 2f 20 2b 20 74 61 62 32  LECT 26 / + tab2
21fc0 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20  .col1 FROM tab2 
21fd0 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
21fe0 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a  l1..----..0..0..
21ff0 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
22000 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  sort..SELECT col
22010 32 20 2a 20 2d 20 74 61 62 30 2e 63 6f 6c 32 20  2 * - tab0.col2 
22020 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
22030 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d  BY tab0.col2..--
22040 2d 2d 0d 0a 2d 31 34 34 34 0d 0a 2d 35 37 36 0d  --..-1444..-576.
22050 0a 2d 36 32 34 31 0d 0a 0d 0a 71 75 65 72 79 20  .-6241....query 
22060 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
22070 54 20 74 61 62 32 2e 63 6f 6c 30 20 2a 20 74 61  T tab2.col0 * ta
22080 62 32 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  b2.col0 FROM tab
22090 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
220a0 63 6f 6c 30 20 48 41 56 49 4e 47 20 4e 4f 54 20  col0 HAVING NOT 
220b0 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  NULL IS NOT NULL
220c0 0d 0a 2d 2d 2d 2d 0d 0a 32 32 35 0d 0a 38 32 38  ..----..225..828
220d0 31 0d 0a 38 34 36 34 0d 0a 0d 0a 71 75 65 72 79  1..8464....query
220e0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
220f0 43 54 20 2d 20 74 61 62 31 2e 63 6f 6c 30 20 46  CT - tab1.col0 F
22100 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
22110 59 20 63 6f 6c 30 20 48 41 56 49 4e 47 20 4e 4f  Y col0 HAVING NO
22120 54 20 74 61 62 31 2e 63 6f 6c 30 20 2b 20 2d 20  T tab1.col0 + - 
22130 74 61 62 31 2e 63 6f 6c 30 20 3c 20 28 20 4e 55  tab1.col0 < ( NU
22140 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  LL )..----....on
22150 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
22160 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
22170 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
22180 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
22190 30 38 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  082..SELECT DIST
221a0 49 4e 43 54 20 2b 20 74 61 62 32 2e 63 6f 6c 31  INCT + tab2.col1
221b0 20 44 49 56 20 32 37 20 46 52 4f 4d 20 74 61 62   DIV 27 FROM tab
221c0 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
221d0 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 32  col1..----..1..2
221e0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
221f0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
22200 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
22210 72 74 20 6c 61 62 65 6c 2d 31 30 38 32 0d 0a 53  rt label-1082..S
22220 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
22230 20 74 61 62 32 2e 63 6f 6c 31 20 2f 20 32 37 20   tab2.col1 / 27 
22240 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
22250 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab2.col1..--
22260 2d 2d 0d 0a 31 0d 0a 32 0d 0a 0d 0a 71 75 65 72  --..1..2....quer
22270 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
22280 45 43 54 20 41 4c 4c 20 2b 20 31 37 20 2d 20 2d  ECT ALL + 17 - -
22290 20 74 61 62 32 2e 63 6f 6c 32 20 46 52 4f 4d 20   tab2.col2 FROM 
222a0 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 63 6f  tab2 GROUP BY co
222b0 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 30 34 0d 0a 37  l2..----..104..7
222c0 35 0d 0a 39 36 0d 0a 0d 0a 73 6b 69 70 69 66 20  5..96....skipif 
222d0 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
222e0 74 67 72 65 53 51 4c 20 68 61 73 20 73 74 72 69  tgreSQL has stri
222f0 63 74 20 63 6f 6c 75 6d 6e 20 75 73 61 67 65 20  ct column usage 
22300 66 6f 72 20 47 52 4f 55 50 20 42 59 20 63 6c 61  for GROUP BY cla
22310 75 73 65 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  uses..query I ro
22320 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
22330 53 54 49 4e 43 54 20 43 4f 41 4c 45 53 43 45 20  STINCT COALESCE 
22340 28 20 2b 20 34 39 2c 20 63 6f 6c 31 2c 20 74 61  ( + 49, col1, ta
22350 62 31 2e 63 6f 6c 30 20 2b 20 74 61 62 31 2e 63  b1.col0 + tab1.c
22360 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 31 20  ol1 ) FROM tab1 
22370 47 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d  GROUP BY col2..-
22380 2d 2d 2d 0d 0a 34 39 0d 0a 0d 0a 71 75 65 72 79  ---..49....query
22390 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
223a0 43 54 20 2b 20 37 32 20 41 53 20 63 6f 6c 30 20  CT + 72 AS col0 
223b0 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 47  FROM tab2 cor0 G
223c0 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
223d0 31 0d 0a 2d 2d 2d 2d 0d 0a 37 32 0d 0a 37 32 0d  1..----..72..72.
223e0 0a 37 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .72....query I r
223f0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
22400 49 53 54 49 4e 43 54 20 2b 20 63 6f 72 30 2e 63  ISTINCT + cor0.c
22410 6f 6c 30 20 2a 20 63 6f 72 30 2e 63 6f 6c 30 20  ol0 * cor0.col0 
22420 2b 20 2d 20 63 6f 72 30 2e 63 6f 6c 30 20 46 52  + - cor0.col0 FR
22430 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
22440 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
22450 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 31 30 0d 0a 38  l0..----..210..8
22460 31 39 30 0d 0a 38 33 37 32 0d 0a 0d 0a 71 75 65  190..8372....que
22470 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
22480 4c 45 43 54 20 41 4c 4c 20 2d 20 74 61 62 32 2e  LECT ALL - tab2.
22490 63 6f 6c 30 20 2a 20 2b 20 74 61 62 32 2e 63 6f  col0 * + tab2.co
224a0 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l0 AS col2 FROM 
224b0 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61  tab2 GROUP BY ta
224c0 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b2.col0..----..-
224d0 32 32 35 0d 0a 2d 38 32 38 31 0d 0a 2d 38 34 36  225..-8281..-846
224e0 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  4....skipif post
224f0 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
22500 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
22510 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
22520 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
22530 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
22540 45 4c 45 43 54 20 2d 20 74 61 62 31 2e 63 6f 6c  ELECT - tab1.col
22550 30 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  0 col2 FROM tab1
22560 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
22570 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 0d 0a  ol0..----..-22..
22580 2d 32 38 0d 0a 2d 38 32 0d 0a 0d 0a 71 75 65 72  -28..-82....quer
22590 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
225a0 45 43 54 20 35 33 20 41 53 20 63 6f 6c 30 20 46  ECT 53 AS col0 F
225b0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
225c0 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
225d0 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 35 33 0d 0a 35  ol2..----..53..5
225e0 33 0d 0a 35 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  3..53....skipif 
225f0 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
22600 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
22610 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
22620 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
22630 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
22640 74 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e 63  t..SELECT cor0.c
22650 6f 6c 32 20 2b 20 2b 20 63 6f 72 30 2e 63 6f 6c  ol2 + + cor0.col
22660 32 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  2 col2 FROM tab1
22670 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
22680 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  or0.col2..----..
22690 31 34 32 0d 0a 31 36 0d 0a 39 30 0d 0a 0d 0a 71  142..16..90....q
226a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
226b0 53 45 4c 45 43 54 20 2b 20 2d 20 74 61 62 30 2e  SELECT + - tab0.
226c0 63 6f 6c 32 20 2b 20 2d 20 74 61 62 30 2e 63 6f  col2 + - tab0.co
226d0 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f  l2 FROM tab0 GRO
226e0 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d  UP BY tab0.col2.
226f0 0a 2d 2d 2d 2d 0d 0a 2d 31 35 38 0d 0a 2d 34 38  .----..-158..-48
22700 0d 0a 2d 37 36 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-76....query I
22710 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
22720 20 44 49 53 54 49 4e 43 54 20 31 20 41 53 20 63   DISTINCT 1 AS c
22730 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol0 FROM tab1 GR
22740 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 30  OUP BY tab1.col0
22750 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 71 75 65  ..----..1....que
22760 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
22770 4c 45 43 54 20 2d 20 32 38 20 46 52 4f 4d 20 74  LECT - 28 FROM t
22780 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
22790 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 2c 20  P BY cor0.col2, 
227a0 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor0.col0..----.
227b0 0a 2d 32 38 0d 0a 2d 32 38 0d 0a 2d 32 38 0d 0a  .-28..-28..-28..
227c0 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
227d0 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
227e0 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
227f0 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
22800 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
22810 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
22820 43 54 20 44 49 53 54 49 4e 43 54 20 32 36 20 63  CT DISTINCT 26 c
22830 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol2 FROM tab2 AS
22840 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
22850 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 36 0d 0a 0d  ol0..----..26...
22860 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
22870 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2b  ..SELECT ALL + +
22880 20 74 61 62 30 2e 63 6f 6c 32 20 41 53 20 63 6f   tab0.col2 AS co
22890 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f  l2 FROM tab0 GRO
228a0 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d  UP BY tab0.col2.
228b0 0a 2d 2d 2d 2d 0d 0a 32 34 0d 0a 33 38 0d 0a 37  .----..24..38..7
228c0 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
228d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
228e0 20 2d 20 74 61 62 32 2e 63 6f 6c 30 20 2b 20 2d   - tab2.col0 + -
228f0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
22900 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
22910 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 32 0d 0a  l0..----..-182..
22920 2d 31 38 34 0d 0a 2d 33 30 0d 0a 0d 0a 71 75 65  -184..-30....que
22930 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
22940 4c 45 43 54 20 2b 20 32 37 20 41 53 20 63 6f 6c  LECT + 27 AS col
22950 31 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  1 FROM tab2 GROU
22960 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a  P BY tab2.col1..
22970 2d 2d 2d 2d 0d 0a 32 37 0d 0a 32 37 0d 0a 32 37  ----..27..27..27
22980 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
22990 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 35 20  ort..SELECT + 5 
229a0 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20 47  FROM tab0 cor0 G
229b0 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
229c0 32 0d 0a 2d 2d 2d 2d 0d 0a 35 0d 0a 35 0d 0a 35  2..----..5..5..5
229d0 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
229e0 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
229f0 51 4c 20 68 61 73 20 73 74 72 69 63 74 20 63 6f  QL has strict co
22a00 6c 75 6d 6e 20 75 73 61 67 65 20 66 6f 72 20 47  lumn usage for G
22a10 52 4f 55 50 20 42 59 20 63 6c 61 75 73 65 73 0d  ROUP BY clauses.
22a20 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
22a30 0d 0a 53 45 4c 45 43 54 20 43 4f 41 4c 45 53 43  ..SELECT COALESC
22a40 45 20 28 20 2b 20 37 38 2c 20 2b 20 74 61 62 31  E ( + 78, + tab1
22a50 2e 63 6f 6c 32 20 2b 20 2d 20 74 61 62 31 2e 63  .col2 + - tab1.c
22a60 6f 6c 31 20 29 20 41 53 20 63 6f 6c 31 20 46 52  ol1 ) AS col1 FR
22a70 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
22a80 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   tab1.col2..----
22a90 0d 0a 37 38 0d 0a 37 38 0d 0a 37 38 0d 0a 0d 0a  ..78..78..78....
22aa0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
22ab0 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
22ac0 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
22ad0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
22ae0 2d 31 31 30 30 0d 0a 53 45 4c 45 43 54 20 2d 20  -1100..SELECT - 
22af0 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
22b00 47 4e 45 44 20 29 20 2f 20 74 61 62 31 2e 63 6f  GNED ) / tab1.co
22b10 6c 32 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  l2 col1 FROM tab
22b20 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
22b30 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  col2..----..NULL
22b40 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..NULL..NULL....
22b50 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
22b60 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
22b70 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
22b80 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
22b90 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
22ba0 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
22bb0 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
22bc0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
22bd0 30 30 0d 0a 53 45 4c 45 43 54 20 2d 20 43 41 53  00..SELECT - CAS
22be0 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
22bf0 47 45 52 20 29 20 2f 20 74 61 62 31 2e 63 6f 6c  GER ) / tab1.col
22c00 32 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  2 col1 FROM tab1
22c10 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
22c20 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ol2..----..NULL.
22c30 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .NULL..NULL....s
22c40 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
22c50 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
22c60 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
22c70 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
22c80 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
22c90 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
22ca0 33 37 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  37 col1 FROM tab
22cb0 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
22cc0 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 33 37 0d 0a  col1..----..37..
22cd0 33 37 0d 0a 33 37 0d 0a 0d 0a 71 75 65 72 79 20  37..37....query 
22ce0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
22cf0 54 20 44 49 53 54 49 4e 43 54 20 28 20 74 61 62  T DISTINCT ( tab
22d00 31 2e 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61  1.col1 ) FROM ta
22d10 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31  b1 GROUP BY tab1
22d20 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d  .col1..----..44.
22d30 0a 35 37 0d 0a 36 0d 0a 0d 0a 71 75 65 72 79 20  .57..6....query 
22d40 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
22d50 54 20 41 4c 4c 20 2d 20 28 20 2d 20 37 31 20 29  T ALL - ( - 71 )
22d60 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
22d70 62 31 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  b1 cor0 GROUP BY
22d80 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   cor0.col0..----
22d90 0d 0a 37 31 0d 0a 37 31 0d 0a 37 31 0d 0a 0d 0a  ..71..71..71....
22da0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
22db0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
22dc0 20 2b 20 39 33 20 41 53 20 63 6f 6c 30 20 46 52   + 93 AS col0 FR
22dd0 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
22de0 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   tab2.col2..----
22df0 0d 0a 39 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..93....query I 
22e00 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
22e10 2d 20 32 39 20 41 53 20 63 6f 6c 31 20 46 52 4f  - 29 AS col1 FRO
22e20 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
22e30 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab0.col0..----.
22e40 0a 2d 32 39 0d 0a 2d 32 39 0d 0a 2d 32 39 0d 0a  .-29..-29..-29..
22e50 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
22e60 74 0d 0a 53 45 4c 45 43 54 20 74 61 62 31 2e 63  t..SELECT tab1.c
22e70 6f 6c 30 20 2a 20 2b 20 36 31 20 2b 20 63 6f 6c  ol0 * + 61 + col
22e80 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  0 FROM tab1 GROU
22e90 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a  P BY tab1.col0..
22ea0 2d 2d 2d 2d 0d 0a 31 33 36 34 0d 0a 31 37 33 36  ----..1364..1736
22eb0 0d 0a 35 30 38 34 0d 0a 0d 0a 71 75 65 72 79 20  ..5084....query 
22ec0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
22ed0 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 20 41 53 20  T ALL + col0 AS 
22ee0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 47  col0 FROM tab2 G
22ef0 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
22f00 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 39 31 0d  0..----..15..91.
22f10 0a 39 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .92....query I r
22f20 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
22f30 4c 4c 20 2d 20 31 37 20 41 53 20 63 6f 6c 31 20  LL - 17 AS col1 
22f40 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
22f50 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d  BY tab0.col0..--
22f60 2d 2d 0d 0a 2d 31 37 0d 0a 2d 31 37 0d 0a 2d 31  --..-17..-17..-1
22f70 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  7....query I row
22f80 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
22f90 20 2b 20 28 20 2b 20 33 30 20 29 20 41 53 20 63   + ( + 30 ) AS c
22fa0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 47 52  ol1 FROM tab2 GR
22fb0 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 32  OUP BY tab2.col2
22fc0 0d 0a 2d 2d 2d 2d 0d 0a 33 30 0d 0a 33 30 0d 0a  ..----..30..30..
22fd0 33 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  30....query I ro
22fe0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 38 32  wsort..SELECT 82
22ff0 20 2b 20 2b 20 63 6f 72 30 2e 63 6f 6c 30 20 46   + + cor0.col0 F
23000 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
23010 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
23020 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 34 0d 0a  ol0..----..104..
23030 31 31 30 0d 0a 31 36 34 0d 0a 0d 0a 71 75 65 72  110..164....quer
23040 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
23050 45 43 54 20 34 32 20 2a 20 2b 20 74 61 62 32 2e  ECT 42 * + tab2.
23060 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 47  col2 FROM tab2 G
23070 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
23080 32 0d 0a 2d 2d 2d 2d 0d 0a 32 34 33 36 0d 0a 33  2..----..2436..3
23090 33 31 38 0d 0a 33 36 35 34 0d 0a 0d 0a 71 75 65  318..3654....que
230a0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
230b0 4c 45 43 54 20 34 34 20 2b 20 39 36 20 46 52 4f  LECT 44 + 96 FRO
230c0 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
230d0 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  tab2.col2..----.
230e0 0a 31 34 30 0d 0a 31 34 30 0d 0a 31 34 30 0d 0a  .140..140..140..
230f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
23100 74 0d 0a 53 45 4c 45 43 54 20 34 35 20 46 52 4f  t..SELECT 45 FRO
23110 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
23120 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  tab1.col2..----.
23130 0a 34 35 0d 0a 34 35 0d 0a 34 35 0d 0a 0d 0a 71  .45..45..45....q
23140 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
23150 53 45 4c 45 43 54 20 2b 20 2b 20 34 38 20 46 52  SELECT + + 48 FR
23160 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
23170 20 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   tab1.col0..----
23180 0d 0a 34 38 0d 0a 34 38 0d 0a 34 38 0d 0a 0d 0a  ..48..48..48....
23190 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
231a0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
231b0 20 32 39 20 46 52 4f 4d 20 74 61 62 32 20 47 52   29 FROM tab2 GR
231c0 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30  OUP BY tab2.col0
231d0 0d 0a 2d 2d 2d 2d 0d 0a 32 39 0d 0a 0d 0a 73 6b  ..----..29....sk
231e0 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
231f0 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
23200 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
23210 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
23220 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
23230 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
23240 4c 4c 20 2b 20 2b 20 74 61 62 32 2e 63 6f 6c 32  LL + + tab2.col2
23250 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
23260 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
23270 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 35 38 0d 0a 37 39  l2..----..58..79
23280 0d 0a 38 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..87....query I 
23290 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
232a0 44 49 53 54 49 4e 43 54 20 2d 20 35 30 20 46 52  DISTINCT - 50 FR
232b0 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
232c0 20 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   tab1.col0..----
232d0 0d 0a 2d 35 30 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-50....query I
232e0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
232f0 20 32 36 20 2b 20 63 6f 72 30 2e 63 6f 6c 30 20   26 + cor0.col0 
23300 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
23310 30 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  0 cor0 GROUP BY 
23320 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d  col2, cor0.col0.
23330 0a 2d 2d 2d 2d 0d 0a 31 30 39 0d 0a 35 32 0d 0a  .----..109..52..
23340 36 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  69....query I ro
23350 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
23360 4c 20 35 37 20 46 52 4f 4d 20 74 61 62 31 20 63  L 57 FROM tab1 c
23370 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
23380 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 35 37  0.col0..----..57
23390 0d 0a 35 37 0d 0a 35 37 0d 0a 0d 0a 71 75 65 72  ..57..57....quer
233a0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
233b0 45 43 54 20 2b 20 31 38 20 46 52 4f 4d 20 74 61  ECT + 18 FROM ta
233c0 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b2 AS cor0 GROUP
233d0 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a   BY col2..----..
233e0 31 38 0d 0a 31 38 0d 0a 31 38 0d 0a 0d 0a 71 75  18..18..18....qu
233f0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
23400 45 4c 45 43 54 20 2d 20 63 6f 72 30 2e 63 6f 6c  ELECT - cor0.col
23410 32 20 2b 20 34 38 20 46 52 4f 4d 20 74 61 62 30  2 + 48 FROM tab0
23420 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
23430 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  or0.col2..----..
23440 2d 33 31 0d 0a 31 30 0d 0a 32 34 0d 0a 0d 0a 71  -31..10..24....q
23450 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
23460 53 45 4c 45 43 54 20 35 37 20 46 52 4f 4d 20 74  SELECT 57 FROM t
23470 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
23480 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 35 37  1.col0..----..57
23490 0d 0a 35 37 0d 0a 35 37 0d 0a 0d 0a 71 75 65 72  ..57..57....quer
234a0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
234b0 45 43 54 20 2d 20 33 35 20 46 52 4f 4d 20 74 61  ECT - 35 FROM ta
234c0 62 32 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  b2 cor0 GROUP BY
234d0 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   cor0.col2..----
234e0 0d 0a 2d 33 35 0d 0a 2d 33 35 0d 0a 2d 33 35 0d  ..-35..-35..-35.
234f0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
23500 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
23510 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52   col1 AS col0 FR
23520 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
23530 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a 2d  GROUP BY col1..-
23540 2d 2d 2d 0d 0a 2d 34 31 0d 0a 2d 35 39 0d 0a 2d  ---..-41..-59..-
23550 36 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  61....skipif pos
23560 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
23570 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
23580 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
23590 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
235a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
235b0 53 45 4c 45 43 54 20 2b 20 63 6f 72 30 2e 63 6f  SELECT + cor0.co
235c0 6c 30 20 2a 20 63 6f 72 30 2e 63 6f 6c 30 20 63  l0 * cor0.col0 c
235d0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol1 FROM tab2 AS
235e0 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
235f0 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  or0.col0..----..
23600 32 32 35 0d 0a 38 32 38 31 0d 0a 38 34 36 34 0d  225..8281..8464.
23610 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
23620 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
23630 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
23640 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
23650 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
23660 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
23670 45 43 54 20 44 49 53 54 49 4e 43 54 20 38 31 20  ECT DISTINCT 81 
23680 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
23690 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
236a0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 38 31 0d 0a  col0..----..81..
236b0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
236c0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f  t..SELECT ALL co
236d0 72 30 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  r0.col1 FROM tab
236e0 32 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20  2 AS cor0 CROSS 
236f0 4a 4f 49 4e 20 74 61 62 32 20 41 53 20 63 6f 72  JOIN tab2 AS cor
23700 31 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  1 GROUP BY cor0.
23710 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 31 0d 0a  col1..----..41..
23720 35 39 0d 0a 36 31 0d 0a 0d 0a 71 75 65 72 79 20  59..61....query 
23730 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
23740 54 20 2b 20 74 61 62 31 2e 63 6f 6c 32 20 2a 20  T + tab1.col2 * 
23750 2b 20 74 61 62 31 2e 63 6f 6c 32 20 2b 20 34 32  + tab1.col2 + 42
23760 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
23770 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31  b1 GROUP BY tab1
23780 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 30 36  .col2..----..106
23790 0d 0a 32 30 36 37 0d 0a 35 30 38 33 0d 0a 0d 0a  ..2067..5083....
237a0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
237b0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
237c0 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 2b 20 2d   + cor0.col1 + -
237d0 20 63 6f 72 30 2e 63 6f 6c 30 20 46 52 4f 4d 20   cor0.col0 FROM 
237e0 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f  tab0 AS cor0 GRO
237f0 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c  UP BY cor0.col0,
23800 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30   cor0.col1, cor0
23810 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 36  .col1..----..-26
23820 0d 0a 2d 38 33 0d 0a 33 38 0d 0a 0d 0a 73 6b 69  ..-83..38....ski
23830 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
23840 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
23850 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
23860 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
23870 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
23880 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
23890 4c 20 2b 20 37 39 20 2a 20 2d 20 63 6f 6c 31 20  L + 79 * - col1 
238a0 2d 20 2d 20 36 37 20 63 6f 6c 30 20 46 52 4f 4d  - - 67 col0 FROM
238b0 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74   tab2 GROUP BY t
238c0 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  ab2.col1..----..
238d0 2d 33 31 37 32 0d 0a 2d 34 35 39 34 0d 0a 2d 34  -3172..-4594..-4
238e0 37 35 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  752....skipif po
238f0 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
23900 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
23910 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
23920 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
23930 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
23940 0a 53 45 4c 45 43 54 20 2d 20 2b 20 38 34 20 63  .SELECT - + 84 c
23950 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol1 FROM tab0 GR
23960 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 31  OUP BY tab0.col1
23970 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 34 0d 0a 2d 38 34  ..----..-84..-84
23980 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
23990 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
239a0 74 61 62 32 2e 63 6f 6c 32 20 2b 20 74 61 62 32  tab2.col2 + tab2
239b0 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52  .col2 AS col0 FR
239c0 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
239d0 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   tab2.col2..----
239e0 0d 0a 31 31 36 0d 0a 31 35 38 0d 0a 31 37 34 0d  ..116..158..174.
239f0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
23a00 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  rt..SELECT ALL +
23a10 20 74 61 62 32 2e 63 6f 6c 31 20 2a 20 74 61 62   tab2.col1 * tab
23a20 32 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  2.col1 FROM tab2
23a30 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63   GROUP BY tab2.c
23a40 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 36 38 31 0d  ol1..----..1681.
23a50 0a 33 34 38 31 0d 0a 33 37 32 31 0d 0a 0d 0a 71  .3481..3721....q
23a60 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
23a70 53 45 4c 45 43 54 20 2b 20 39 37 20 46 52 4f 4d  SELECT + 97 FROM
23a80 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74   tab1 GROUP BY t
23a90 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  ab1.col2..----..
23aa0 39 37 0d 0a 39 37 0d 0a 39 37 0d 0a 0d 0a 71 75  97..97..97....qu
23ab0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
23ac0 45 4c 45 43 54 20 35 31 20 41 53 20 63 6f 6c 32  ELECT 51 AS col2
23ad0 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
23ae0 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d   BY tab2.col1..-
23af0 2d 2d 2d 0d 0a 35 31 0d 0a 35 31 0d 0a 35 31 0d  ---..51..51..51.
23b00 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
23b10 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
23b20 4e 43 54 20 2d 20 34 32 20 46 52 4f 4d 20 74 61  NCT - 42 FROM ta
23b30 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30  b0 GROUP BY tab0
23b40 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 32  .col0..----..-42
23b50 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
23b60 6f 72 74 0d 0a 53 45 4c 45 43 54 20 28 20 34 20  ort..SELECT ( 4 
23b70 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
23b80 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
23b90 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c  0.col1, cor0.col
23ba0 31 0d 0a 2d 2d 2d 2d 0d 0a 34 0d 0a 34 0d 0a 0d  1..----..4..4...
23bb0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
23bc0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
23bd0 54 20 63 6f 72 30 2e 63 6f 6c 30 20 2a 20 38 30  T cor0.col0 * 80
23be0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
23bf0 62 31 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  b1 cor0 GROUP BY
23c00 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30   cor0.col0, cor0
23c10 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 37 36  .col1..----..176
23c20 30 0d 0a 32 32 34 30 0d 0a 36 35 36 30 0d 0a 0d  0..2240..6560...
23c30 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
23c40 0d 0a 53 45 4c 45 43 54 20 2b 20 36 32 20 41 53  ..SELECT + 62 AS
23c50 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
23c60 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
23c70 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 36 32 0d 0a 36 32  l0..----..62..62
23c80 0d 0a 36 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..62....query I 
23c90 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
23ca0 2d 20 36 32 20 2a 20 63 6f 72 30 2e 63 6f 6c 31  - 62 * cor0.col1
23cb0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
23cc0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
23cd0 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37  .col1..----..-27
23ce0 32 38 0d 0a 2d 33 35 33 34 0d 0a 2d 33 37 32 0d  28..-3534..-372.
23cf0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
23d00 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 39 39 20  rt..SELECT + 99 
23d10 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20  FROM tab1 GROUP 
23d20 42 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d  BY tab1.col0..--
23d30 2d 2d 0d 0a 39 39 0d 0a 39 39 0d 0a 39 39 0d 0a  --..99..99..99..
23d40 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
23d50 74 0d 0a 53 45 4c 45 43 54 20 37 37 20 2a 20 2b  t..SELECT 77 * +
23d60 20 63 6f 72 31 2e 63 6f 6c 32 20 46 52 4f 4d 20   cor1.col2 FROM 
23d70 74 61 62 32 20 41 53 20 63 6f 72 30 20 43 52 4f  tab2 AS cor0 CRO
23d80 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53 20  SS JOIN tab1 AS 
23d90 63 6f 72 31 20 47 52 4f 55 50 20 42 59 20 63 6f  cor1 GROUP BY co
23da0 72 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33  r1.col2..----..3
23db0 34 36 35 0d 0a 35 34 36 37 0d 0a 36 31 36 0d 0a  465..5467..616..
23dc0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
23dd0 74 0d 0a 53 45 4c 45 43 54 20 2b 20 39 34 20 46  t..SELECT + 94 F
23de0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
23df0 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
23e00 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 39 34 0d 0a 39  ol1..----..94..9
23e10 34 0d 0a 39 34 0d 0a 0d 0a 71 75 65 72 79 20 49  4..94....query I
23e20 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
23e30 20 41 4c 4c 20 2b 20 37 32 20 41 53 20 63 6f 6c   ALL + 72 AS col
23e40 31 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55  1 FROM tab0 GROU
23e50 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a  P BY tab0.col2..
23e60 2d 2d 2d 2d 0d 0a 37 32 0d 0a 37 32 0d 0a 37 32  ----..72..72..72
23e70 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
23e80 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 32 32  ort..SELECT + 22
23e90 20 2b 20 2d 20 63 6f 72 30 2e 63 6f 6c 32 20 46   + - cor0.col2 F
23ea0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
23eb0 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
23ec0 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  ol2, cor0.col0..
23ed0 2d 2d 2d 2d 0d 0a 2d 32 33 0d 0a 2d 34 39 0d 0a  ----..-23..-49..
23ee0 31 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  14....query I ro
23ef0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
23f00 53 54 49 4e 43 54 20 32 31 20 46 52 4f 4d 20 74  STINCT 21 FROM t
23f10 61 62 31 20 63 6f 72 30 20 47 52 4f 55 50 20 42  ab1 cor0 GROUP B
23f20 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 32 31  Y col1..----..21
23f30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
23f40 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30  ort..SELECT cor0
23f50 2e 63 6f 6c 30 20 2a 20 36 39 20 46 52 4f 4d 20  .col0 * 69 FROM 
23f60 74 61 62 31 20 63 6f 72 30 20 47 52 4f 55 50 20  tab1 cor0 GROUP 
23f70 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  BY cor0.col0..--
23f80 2d 2d 0d 0a 31 35 31 38 0d 0a 31 39 33 32 0d 0a  --..1518..1932..
23f90 35 36 35 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20  5658....query I 
23fa0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
23fb0 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 72 30 2e  DISTINCT - cor0.
23fc0 63 6f 6c 31 20 2a 20 2d 20 63 6f 72 30 2e 63 6f  col1 * - cor0.co
23fd0 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l1 AS col0 FROM 
23fe0 74 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f  tab2 AS cor0 GRO
23ff0 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d  UP BY cor0.col1.
24000 0a 2d 2d 2d 2d 0d 0a 31 36 38 31 0d 0a 33 34 38  .----..1681..348
24010 31 0d 0a 33 37 32 31 0d 0a 0d 0a 71 75 65 72 79  1..3721....query
24020 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
24030 43 54 20 41 4c 4c 20 2d 20 74 61 62 31 2e 63 6f  CT ALL - tab1.co
24040 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f  l2 FROM tab1 GRO
24050 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 20  UP BY tab1.col2 
24060 48 41 56 49 4e 47 20 4e 4f 54 20 28 20 4e 55 4c  HAVING NOT ( NUL
24070 4c 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  L ) IS NULL..---
24080 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
24090 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 74 61 62  sort..SELECT tab
240a0 31 2e 63 6f 6c 32 20 2a 20 63 6f 6c 32 20 2b 20  1.col2 * col2 + 
240b0 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  + col2 FROM tab1
240c0 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
240d0 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32 30 37 30 0d  ol2..----..2070.
240e0 0a 35 31 31 32 0d 0a 37 32 0d 0a 0d 0a 71 75 65  .5112..72....que
240f0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
24100 4c 45 43 54 20 2d 20 2b 20 74 61 62 32 2e 63 6f  LECT - + tab2.co
24110 6c 32 20 2a 20 2b 20 74 61 62 32 2e 63 6f 6c 32  l2 * + tab2.col2
24120 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
24130 62 32 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 32  b2 GROUP BY col2
24140 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 33 36 34 0d 0a 2d  ..----..-3364..-
24150 36 32 34 31 0d 0a 2d 37 35 36 39 0d 0a 0d 0a 6f  6241..-7569....o
24160 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
24170 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
24180 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
24190 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
241a0 31 31 35 32 0d 0a 53 45 4c 45 43 54 20 2b 20 43  1152..SELECT + C
241b0 41 53 54 28 20 31 20 41 53 20 53 49 47 4e 45 44  AST( 1 AS SIGNED
241c0 20 29 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f   ) FROM tab1 GRO
241d0 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d  UP BY tab1.col2.
241e0 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a  .----..1..1..1..
241f0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
24200 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
24210 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
24220 20 6c 61 62 65 6c 2d 31 31 35 32 0d 0a 53 45 4c   label-1152..SEL
24230 45 43 54 20 2b 20 43 41 53 54 20 28 20 31 20 41  ECT + CAST ( 1 A
24240 53 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d  S INTEGER ) FROM
24250 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74   tab1 GROUP BY t
24260 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  ab1.col2..----..
24270 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69  1..1..1....skipi
24280 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
24290 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
242a0 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
242b0 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
242c0 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
242d0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 36 35 20 63  ort..SELECT 65 c
242e0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 47 52  ol2 FROM tab2 GR
242f0 4f 55 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d  OUP BY col0..---
24300 2d 0d 0a 36 35 0d 0a 36 35 0d 0a 36 35 0d 0a 0d  -..65..65..65...
24310 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
24320 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
24330 54 20 63 6f 72 31 2e 63 6f 6c 31 20 41 53 20 63  T cor1.col1 AS c
24340 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
24350 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e   cor0 CROSS JOIN
24360 20 74 61 62 30 20 41 53 20 63 6f 72 31 20 47 52   tab0 AS cor1 GR
24370 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31  OUP BY cor0.col1
24380 2c 20 63 6f 72 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d  , cor1.col1..---
24390 2d 0d 0a 30 0d 0a 38 31 0d 0a 0d 0a 71 75 65 72  -..0..81....quer
243a0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
243b0 45 43 54 20 2d 20 2b 20 74 61 62 32 2e 63 6f 6c  ECT - + tab2.col
243c0 31 20 2a 20 28 20 32 36 20 29 20 2b 20 2b 20 74  1 * ( 26 ) + + t
243d0 61 62 32 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 30  ab2.col1 AS col0
243e0 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
243f0 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d   BY tab2.col1..-
24400 2d 2d 2d 0d 0a 2d 31 30 32 35 0d 0a 2d 31 34 37  ---..-1025..-147
24410 35 0d 0a 2d 31 35 32 35 0d 0a 0d 0a 71 75 65 72  5..-1525....quer
24420 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
24430 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 35  ECT DISTINCT + 5
24440 39 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  9 AS col0 FROM t
24450 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
24460 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 35 39  1.col2..----..59
24470 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
24480 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20  ort..SELECT - - 
24490 31 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  1 FROM tab2 GROU
244a0 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  P BY col2..----.
244b0 0a 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a 71 75 65 72  .1..1..1....quer
244c0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
244d0 45 43 54 20 44 49 53 54 49 4e 43 54 20 34 36 20  ECT DISTINCT 46 
244e0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
244f0 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
24500 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d  BY cor0.col1..--
24510 2d 2d 0d 0a 34 36 0d 0a 0d 0a 71 75 65 72 79 20  --..46....query 
24520 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
24530 54 20 2d 20 37 31 20 46 52 4f 4d 20 74 61 62 30  T - 71 FROM tab0
24540 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
24550 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72  Y cor0.col1, cor
24560 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 37  0.col2..----..-7
24570 31 0d 0a 2d 37 31 0d 0a 2d 37 31 0d 0a 0d 0a 71  1..-71..-71....q
24580 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
24590 53 45 4c 45 43 54 20 32 39 20 41 53 20 63 6f 6c  SELECT 29 AS col
245a0 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  0 FROM tab1 GROU
245b0 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a  P BY tab1.col2..
245c0 2d 2d 2d 2d 0d 0a 32 39 0d 0a 32 39 0d 0a 32 39  ----..29..29..29
245d0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
245e0 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
245f0 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
24600 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
24610 61 62 65 6c 2d 31 31 36 31 0d 0a 53 45 4c 45 43  abel-1161..SELEC
24620 54 20 74 61 62 30 2e 63 6f 6c 30 20 44 49 56 20  T tab0.col0 DIV 
24630 74 61 62 30 2e 63 6f 6c 30 20 46 52 4f 4d 20 74  tab0.col0 FROM t
24640 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab0 GROUP BY tab
24650 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d  0.col0..----..1.
24660 0a 31 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66 20  .1..1....skipif 
24670 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
24680 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
24690 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
246a0 36 31 0d 0a 53 45 4c 45 43 54 20 74 61 62 30 2e  61..SELECT tab0.
246b0 63 6f 6c 30 20 2f 20 74 61 62 30 2e 63 6f 6c 30  col0 / tab0.col0
246c0 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
246d0 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d   BY tab0.col0..-
246e0 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a  ---..1..1..1....
246f0 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
24700 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
24710 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
24720 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
24730 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
24740 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
24750 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30   DISTINCT + col0
24760 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
24770 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
24780 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32 38  l0..----..22..28
24790 0d 0a 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..82....query I 
247a0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
247b0 41 4c 4c 20 2d 20 31 20 2a 20 39 39 20 2b 20 2b  ALL - 1 * 99 + +
247c0 20 63 6f 72 30 2e 63 6f 6c 31 20 46 52 4f 4d 20   cor0.col1 FROM 
247d0 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f  tab1 AS cor0 GRO
247e0 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d  UP BY cor0.col1.
247f0 0a 2d 2d 2d 2d 0d 0a 2d 34 32 0d 0a 2d 35 35 0d  .----..-42..-55.
24800 0a 2d 39 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-93....query I 
24810 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
24820 2b 20 2b 20 33 20 41 53 20 63 6f 6c 31 20 46 52  + + 3 AS col1 FR
24830 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
24840 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   tab1.col1..----
24850 0d 0a 33 0d 0a 33 0d 0a 33 0d 0a 0d 0a 71 75 65  ..3..3..3....que
24860 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
24870 4c 45 43 54 20 35 33 20 46 52 4f 4d 20 74 61 62  LECT 53 FROM tab
24880 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  0 AS cor0 GROUP 
24890 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  BY cor0.col0..--
248a0 2d 2d 0d 0a 35 33 0d 0a 35 33 0d 0a 35 33 0d 0a  --..53..53..53..
248b0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
248c0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 35 37  t..SELECT ALL 57
248d0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
248e0 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31  b1 GROUP BY tab1
248f0 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 35 37 0d  .col2..----..57.
24900 0a 35 37 0d 0a 35 37 0d 0a 0d 0a 71 75 65 72 79  .57..57....query
24910 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
24920 43 54 20 2b 20 32 36 20 41 53 20 63 6f 6c 32 20  CT + 26 AS col2 
24930 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
24940 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab0.col1..--
24950 2d 2d 0d 0a 32 36 0d 0a 32 36 0d 0a 0d 0a 71 75  --..26..26....qu
24960 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
24970 45 4c 45 43 54 20 2b 20 39 39 20 46 52 4f 4d 20  ELECT + 99 FROM 
24980 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
24990 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 39  b1.col1..----..9
249a0 39 0d 0a 39 39 0d 0a 39 39 0d 0a 0d 0a 71 75 65  9..99..99....que
249b0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
249c0 4c 45 43 54 20 2d 20 2b 20 63 6f 6c 32 20 2b 20  LECT - + col2 + 
249d0 2d 20 36 35 20 46 52 4f 4d 20 74 61 62 30 20 47  - 65 FROM tab0 G
249e0 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c  ROUP BY tab0.col
249f0 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 33 0d 0a 2d  2..----..-103..-
24a00 31 34 34 0d 0a 2d 38 39 0d 0a 0d 0a 71 75 65 72  144..-89....quer
24a10 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
24a20 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63  ECT DISTINCT + c
24a30 6f 72 31 2e 63 6f 6c 32 20 2a 20 2b 20 31 20 41  or1.col2 * + 1 A
24a40 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
24a50 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a   AS cor0 CROSS J
24a60 4f 49 4e 20 74 61 62 30 20 41 53 20 63 6f 72 31  OIN tab0 AS cor1
24a70 20 47 52 4f 55 50 20 42 59 20 63 6f 72 31 2e 63   GROUP BY cor1.c
24a80 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32 34 0d 0a 33  ol2..----..24..3
24a90 38 0d 0a 37 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  8..79....onlyif 
24aa0 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
24ab0 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
24ac0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
24ad0 6f 72 74 20 6c 61 62 65 6c 2d 31 31 37 31 0d 0a  ort label-1171..
24ae0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
24af0 74 61 62 32 2e 63 6f 6c 30 20 2a 20 35 33 20 2b  tab2.col0 * 53 +
24b00 20 39 39 20 44 49 56 20 2b 20 74 61 62 32 2e 63   99 DIV + tab2.c
24b10 6f 6c 30 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  ol0 col0 FROM ta
24b20 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32  b2 GROUP BY tab2
24b30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 34 38 32  .col0..----..482
24b40 34 0d 0a 34 38 37 37 0d 0a 38 30 31 0d 0a 0d 0a  4..4877..801....
24b50 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
24b60 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
24b70 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
24b80 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
24b90 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
24ba0 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
24bb0 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
24bc0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
24bd0 37 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  71..SELECT DISTI
24be0 4e 43 54 20 74 61 62 32 2e 63 6f 6c 30 20 2a 20  NCT tab2.col0 * 
24bf0 35 33 20 2b 20 39 39 20 2f 20 2b 20 74 61 62 32  53 + 99 / + tab2
24c00 2e 63 6f 6c 30 20 63 6f 6c 30 20 46 52 4f 4d 20  .col0 col0 FROM 
24c10 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61  tab2 GROUP BY ta
24c20 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 34  b2.col0..----..4
24c30 38 32 34 0d 0a 34 38 37 37 0d 0a 38 30 31 0d 0a  824..4877..801..
24c40 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
24c50 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
24c60 74 61 62 31 2e 63 6f 6c 31 20 41 53 20 63 6f 6c  tab1.col1 AS col
24c70 30 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  0 FROM tab1 WHER
24c80 45 20 4e 4f 54 20 28 20 2d 20 63 6f 6c 30 20 29  E NOT ( - col0 )
24c90 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 47 52 4f   IS NOT NULL GRO
24ca0 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 20  UP BY tab1.col1 
24cb0 48 41 56 49 4e 47 20 4e 55 4c 4c 20 49 53 20 4e  HAVING NULL IS N
24cc0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
24cd0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
24ce0 4c 45 43 54 20 74 61 62 31 2e 63 6f 6c 32 20 46  LECT tab1.col2 F
24cf0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
24d00 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31   CROSS JOIN tab1
24d10 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
24d20 6f 6c 32 20 48 41 56 49 4e 47 20 4e 4f 54 20 74  ol2 HAVING NOT t
24d30 61 62 31 2e 63 6f 6c 32 20 49 53 20 4e 55 4c 4c  ab1.col2 IS NULL
24d40 0d 0a 2d 2d 2d 2d 0d 0a 34 35 0d 0a 37 31 0d 0a  ..----..45..71..
24d50 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  8....query I row
24d60 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
24d70 20 2b 20 36 31 20 46 52 4f 4d 20 74 61 62 30 20   + 61 FROM tab0 
24d80 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f  GROUP BY tab0.co
24d90 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 36 31 0d 0a 36 31  l1..----..61..61
24da0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
24db0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
24dc0 2d 20 63 6f 72 31 2e 63 6f 6c 32 20 41 53 20 63  - cor1.col2 AS c
24dd0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
24de0 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e   cor0 CROSS JOIN
24df0 20 74 61 62 32 20 63 6f 72 31 20 47 52 4f 55 50   tab2 cor1 GROUP
24e00 20 42 59 20 63 6f 72 31 2e 63 6f 6c 32 0d 0a 2d   BY cor1.col2..-
24e10 2d 2d 2d 0d 0a 2d 35 38 0d 0a 2d 37 39 0d 0a 2d  ---..-58..-79..-
24e20 38 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  87....onlyif mys
24e30 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
24e40 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
24e50 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
24e60 20 6c 61 62 65 6c 2d 31 31 37 36 0d 0a 53 45 4c   label-1176..SEL
24e70 45 43 54 20 41 4c 4c 20 2d 20 43 41 53 54 28 20  ECT ALL - CAST( 
24e80 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
24e90 20 2a 20 2d 20 74 61 62 31 2e 63 6f 6c 32 20 63   * - tab1.col2 c
24ea0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol0 FROM tab1 GR
24eb0 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d  OUP BY col2..---
24ec0 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
24ed0 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
24ee0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
24ef0 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73  ible..skipif pos
24f00 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
24f10 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
24f20 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
24f30 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
24f40 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
24f50 61 62 65 6c 2d 31 31 37 36 0d 0a 53 45 4c 45 43  abel-1176..SELEC
24f60 54 20 41 4c 4c 20 2d 20 43 41 53 54 20 28 20 4e  T ALL - CAST ( N
24f70 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
24f80 20 2a 20 2d 20 74 61 62 31 2e 63 6f 6c 32 20 63   * - tab1.col2 c
24f90 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol0 FROM tab1 GR
24fa0 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d  OUP BY col2..---
24fb0 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
24fc0 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ULL....query I r
24fd0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 37  owsort..SELECT 7
24fe0 37 20 2a 20 38 37 20 41 53 20 63 6f 6c 30 20 46  7 * 87 AS col0 F
24ff0 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42  ROM tab0 GROUP B
25000 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y tab0.col1..---
25010 2d 0d 0a 36 36 39 39 0d 0a 36 36 39 39 0d 0a 0d  -..6699..6699...
25020 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
25030 0d 0a 53 45 4c 45 43 54 20 33 31 20 41 53 20 63  ..SELECT 31 AS c
25040 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52  ol0 FROM tab2 GR
25050 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31  OUP BY tab2.col1
25060 0d 0a 2d 2d 2d 2d 0d 0a 33 31 0d 0a 33 31 0d 0a  ..----..31..31..
25070 33 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  31....query I ro
25080 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
25090 4c 20 2b 20 36 31 20 41 53 20 63 6f 6c 30 20 46  L + 61 AS col0 F
250a0 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
250b0 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y tab1.col1..---
250c0 2d 0d 0a 36 31 0d 0a 36 31 0d 0a 36 31 0d 0a 0d  -..61..61..61...
250d0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
250e0 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
250f0 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
25100 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
25110 6c 2d 31 31 38 30 0d 0a 53 45 4c 45 43 54 20 37  l-1180..SELECT 7
25120 39 20 44 49 56 20 2d 20 74 61 62 30 2e 63 6f 6c  9 DIV - tab0.col
25130 30 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55  0 FROM tab0 GROU
25140 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a  P BY tab0.col0..
25150 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 33 0d 0a 30 0d  ----..-1..-3..0.
25160 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
25170 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
25180 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
25190 74 20 6c 61 62 65 6c 2d 31 31 38 30 0d 0a 53 45  t label-1180..SE
251a0 4c 45 43 54 20 37 39 20 2f 20 2d 20 74 61 62 30  LECT 79 / - tab0
251b0 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20  .col0 FROM tab0 
251c0 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f  GROUP BY tab0.co
251d0 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 33  l0..----..-1..-3
251e0 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..0....query I r
251f0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
25200 49 53 54 49 4e 43 54 20 35 32 20 2a 20 2b 20 31  ISTINCT 52 * + 1
25210 34 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  4 FROM tab1 GROU
25220 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a  P BY tab1.col1..
25230 2d 2d 2d 2d 0d 0a 37 32 38 0d 0a 0d 0a 71 75 65  ----..728....que
25240 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
25250 4c 45 43 54 20 2b 20 28 20 2d 20 63 6f 72 30 2e  LECT + ( - cor0.
25260 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 31 20 46  col0 ) AS col1 F
25270 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
25280 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
25290 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 36 0d 0a  ol0..----..-26..
252a0 2d 34 33 0d 0a 2d 38 33 0d 0a 0d 0a 71 75 65 72  -43..-83....quer
252b0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
252c0 45 43 54 20 41 4c 4c 20 74 61 62 32 2e 63 6f 6c  ECT ALL tab2.col
252d0 31 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20  1 + - col1 FROM 
252e0 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61  tab2 GROUP BY ta
252f0 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30  b2.col1..----..0
25300 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  ..0..0....query 
25310 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
25320 54 20 2d 20 28 20 35 36 20 29 20 2b 20 2b 20 74  T - ( 56 ) + + t
25330 61 62 32 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61  ab2.col2 FROM ta
25340 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32  b2 GROUP BY tab2
25350 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32 0d 0a  .col2..----..2..
25360 32 33 0d 0a 33 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  23..31....onlyif
25370 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
25380 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
25390 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
253a0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 38 35 0d  sort label-1185.
253b0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f  .SELECT ALL + co
253c0 72 30 2e 63 6f 6c 31 20 44 49 56 20 2d 20 32 33  r0.col1 DIV - 23
253d0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
253e0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
253f0 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d  .col1..----..-1.
25400 0a 2d 32 0d 0a 2d 32 0d 0a 0d 0a 73 6b 69 70 69  .-2..-2....skipi
25410 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
25420 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
25430 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
25440 31 31 38 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1185..SELECT ALL
25450 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 2f 20 2d   + cor0.col1 / -
25460 20 32 33 20 46 52 4f 4d 20 74 61 62 32 20 41 53   23 FROM tab2 AS
25470 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
25480 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  or0.col1..----..
25490 2d 31 0d 0a 2d 32 0d 0a 2d 32 0d 0a 0d 0a 71 75  -1..-2..-2....qu
254a0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
254b0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
254c0 20 74 61 62 32 2e 63 6f 6c 30 20 2a 20 63 6f 6c   tab2.col0 * col
254d0 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  0 FROM tab2 GROU
254e0 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a  P BY tab2.col0..
254f0 2d 2d 2d 2d 0d 0a 2d 32 32 35 0d 0a 2d 38 32 38  ----..-225..-828
25500 31 0d 0a 2d 38 34 36 34 0d 0a 0d 0a 71 75 65 72  1..-8464....quer
25510 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
25520 45 43 54 20 2b 20 39 35 20 46 52 4f 4d 20 74 61  ECT + 95 FROM ta
25530 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30  b0 GROUP BY tab0
25540 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 39 35 0d  .col1..----..95.
25550 0a 39 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .95....query I r
25560 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 35  owsort..SELECT 5
25570 39 20 2a 20 63 6f 72 30 2e 63 6f 6c 30 20 41 53  9 * cor0.col0 AS
25580 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
25590 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
255a0 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   cor0.col0..----
255b0 0d 0a 31 35 33 34 0d 0a 32 35 33 37 0d 0a 34 38  ..1534..2537..48
255c0 39 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  97....skipif pos
255d0 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
255e0 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
255f0 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
25600 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
25610 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
25620 53 45 4c 45 43 54 20 41 4c 4c 20 74 61 62 30 2e  SELECT ALL tab0.
25630 63 6f 6c 32 20 63 6f 6c 30 20 46 52 4f 4d 20 74  col2 col0 FROM t
25640 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab0 GROUP BY tab
25650 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32 34  0.col2..----..24
25660 0d 0a 33 38 0d 0a 37 39 0d 0a 0d 0a 71 75 65 72  ..38..79....quer
25670 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
25680 45 43 54 20 41 4c 4c 20 33 33 20 41 53 20 63 6f  ECT ALL 33 AS co
25690 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f  l0 FROM tab1 GRO
256a0 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d  UP BY tab1.col1.
256b0 0a 2d 2d 2d 2d 0d 0a 33 33 0d 0a 33 33 0d 0a 33  .----..33..33..3
256c0 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
256d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
256e0 20 2b 20 63 6f 72 30 2e 63 6f 6c 30 20 41 53 20   + cor0.col0 AS 
256f0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
25700 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
25710 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 6c 30 0d  cor0.col1, col0.
25720 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 39 31 0d 0a 39  .----..15..91..9
25730 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  2....onlyif mysq
25740 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
25750 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
25760 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
25770 6c 61 62 65 6c 2d 31 31 39 32 0d 0a 53 45 4c 45  label-1192..SELE
25780 43 54 20 43 41 53 54 28 20 35 33 20 41 53 20 53  CT CAST( 53 AS S
25790 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 31 20  IGNED ) AS col1 
257a0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
257b0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
257c0 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 35 33 0d 0a  col1..----..53..
257d0 35 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  53....skipif mys
257e0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
257f0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
25800 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 39 32 0d  sort label-1192.
25810 0a 53 45 4c 45 43 54 20 43 41 53 54 20 28 20 35  .SELECT CAST ( 5
25820 33 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41  3 AS INTEGER ) A
25830 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
25840 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
25850 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y cor0.col1..---
25860 2d 0d 0a 35 33 0d 0a 35 33 0d 0a 0d 0a 71 75 65  -..53..53....que
25870 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
25880 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
25890 28 20 63 6f 72 30 2e 63 6f 6c 31 20 29 20 46 52  ( cor0.col1 ) FR
258a0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
258b0 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
258c0 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 31 0d 0a 35 39  l1..----..41..59
258d0 0d 0a 36 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..61....query I 
258e0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
258f0 44 49 53 54 49 4e 43 54 20 39 35 20 41 53 20 63  DISTINCT 95 AS c
25900 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
25910 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
25920 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  or0.col2..----..
25930 39 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  95....query I ro
25940 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
25950 53 54 49 4e 43 54 20 2b 20 63 6f 72 30 2e 63 6f  STINCT + cor0.co
25960 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
25970 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
25980 72 30 2e 63 6f 6c 32 2c 20 63 6f 6c 30 0d 0a 2d  r0.col2, col0..-
25990 2d 2d 2d 0d 0a 32 36 0d 0a 34 33 0d 0a 38 33 0d  ---..26..43..83.
259a0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
259b0 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 74  rt..SELECT - + t
259c0 61 62 31 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 31  ab1.col2 AS col1
259d0 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50   FROM tab1 GROUP
259e0 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a   BY col2..----..
259f0 2d 34 35 0d 0a 2d 37 31 0d 0a 2d 38 0d 0a 0d 0a  -45..-71..-8....
25a00 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
25a10 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 32 30  .SELECT ALL - 20
25a20 20 2a 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 41   * + cor0.col1 A
25a30 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
25a40 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
25a50 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 6c  Y cor0.col1, col
25a60 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 32 30 0d 0a  1..----..-1620..
25a70 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
25a80 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
25a90 20 2b 20 38 36 20 2a 20 2b 20 63 6f 72 30 2e 63   + 86 * + cor0.c
25aa0 6f 6c 32 20 2b 20 63 6f 72 30 2e 63 6f 6c 32 20  ol2 + cor0.col2 
25ab0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
25ac0 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  2 AS cor0 GROUP 
25ad0 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d  BY cor0.col2..--
25ae0 2d 2d 0d 0a 35 30 34 36 0d 0a 36 38 37 33 0d 0a  --..5046..6873..
25af0 37 35 36 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20  7569....query I 
25b00 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
25b10 41 4c 4c 20 37 34 20 46 52 4f 4d 20 74 61 62 30  ALL 74 FROM tab0
25b20 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
25b30 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y cor0.col2..---
25b40 2d 0d 0a 37 34 0d 0a 37 34 0d 0a 37 34 0d 0a 0d  -..74..74..74...
25b50 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
25b60 0d 0a 53 45 4c 45 43 54 20 34 32 20 41 53 20 63  ..SELECT 42 AS c
25b70 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
25b80 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
25b90 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  or0.col2..----..
25ba0 34 32 0d 0a 34 32 0d 0a 34 32 0d 0a 0d 0a 71 75  42..42..42....qu
25bb0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
25bc0 45 4c 45 43 54 20 2b 20 34 39 20 41 53 20 63 6f  ELECT + 49 AS co
25bd0 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f  l0 FROM tab2 GRO
25be0 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d  UP BY tab2.col1.
25bf0 0a 2d 2d 2d 2d 0d 0a 34 39 0d 0a 34 39 0d 0a 34  .----..49..49..4
25c00 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
25c10 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63  sort..SELECT + c
25c20 6f 72 30 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 30  or0.col0 AS col0
25c30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
25c40 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
25c50 62 30 20 41 53 20 63 6f 72 31 20 47 52 4f 55 50  b0 AS cor1 GROUP
25c60 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63   BY cor0.col0, c
25c70 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  or0.col0..----..
25c80 32 32 0d 0a 32 38 0d 0a 38 32 0d 0a 0d 0a 71 75  22..28..82....qu
25c90 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
25ca0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 31  ELECT DISTINCT 1
25cb0 35 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  5 FROM tab0 AS c
25cc0 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
25cd0 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35  0.col0..----..15
25ce0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
25cf0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
25d00 49 4e 43 54 20 74 61 62 32 2e 63 6f 6c 30 20 2a  INCT tab2.col0 *
25d10 20 2d 20 74 61 62 32 2e 63 6f 6c 30 20 46 52 4f   - tab2.col0 FRO
25d20 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
25d30 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab2.col0..----.
25d40 0a 2d 32 32 35 0d 0a 2d 38 32 38 31 0d 0a 2d 38  .-225..-8281..-8
25d50 34 36 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  464....query I r
25d60 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
25d70 6f 72 30 2e 63 6f 6c 32 20 2a 20 39 32 20 41 53  or0.col2 * 92 AS
25d80 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
25d90 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
25da0 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   cor0.col2..----
25db0 0d 0a 32 32 30 38 0d 0a 33 34 39 36 0d 0a 37 32  ..2208..3496..72
25dc0 36 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  68....query I ro
25dd0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
25de0 53 54 49 4e 43 54 20 2d 20 33 31 20 2b 20 74 61  STINCT - 31 + ta
25df0 62 31 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  b1.col1 FROM tab
25e00 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
25e10 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 35 0d  col1..----..-25.
25e20 0a 31 33 0d 0a 32 36 0d 0a 0d 0a 71 75 65 72 79  .13..26....query
25e30 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
25e40 43 54 20 44 49 53 54 49 4e 43 54 20 34 30 20 2a  CT DISTINCT 40 *
25e50 20 2b 20 74 61 62 31 2e 63 6f 6c 31 20 46 52 4f   + tab1.col1 FRO
25e60 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
25e70 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab1.col1..----.
25e80 0a 31 37 36 30 0d 0a 32 32 38 30 0d 0a 32 34 30  .1760..2280..240
25e90 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
25ea0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
25eb0 49 4e 43 54 20 2d 20 33 20 46 52 4f 4d 20 74 61  INCT - 3 FROM ta
25ec0 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32  b2 GROUP BY tab2
25ed0 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d  .col0..----..-3.
25ee0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
25ef0 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 31 38 20  rt..SELECT - 18 
25f00 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
25f10 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
25f20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 0d  col0..----..-18.
25f30 0a 2d 31 38 0d 0a 2d 31 38 0d 0a 0d 0a 71 75 65  .-18..-18....que
25f40 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
25f50 4c 45 43 54 20 2d 20 39 31 20 46 52 4f 4d 20 74  LECT - 91 FROM t
25f60 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab2 GROUP BY tab
25f70 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39  2.col0..----..-9
25f80 31 0d 0a 2d 39 31 0d 0a 2d 39 31 0d 0a 0d 0a 71  1..-91..-91....q
25f90 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
25fa0 53 45 4c 45 43 54 20 36 37 20 46 52 4f 4d 20 74  SELECT 67 FROM t
25fb0 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
25fc0 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 36 37  1.col0..----..67
25fd0 0d 0a 36 37 0d 0a 36 37 0d 0a 0d 0a 71 75 65 72  ..67..67....quer
25fe0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
25ff0 45 43 54 20 2b 20 38 31 20 41 53 20 63 6f 6c 32  ECT + 81 AS col2
26000 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
26010 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
26020 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 38 31 0d  .col1..----..81.
26030 0a 38 31 0d 0a 38 31 0d 0a 0d 0a 71 75 65 72 79  .81..81....query
26040 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
26050 43 54 20 2d 20 33 35 20 41 53 20 63 6f 6c 30 20  CT - 35 AS col0 
26060 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
26070 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab2.col1..--
26080 2d 2d 0d 0a 2d 33 35 0d 0a 2d 33 35 0d 0a 2d 33  --..-35..-35..-3
26090 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
260a0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
260b0 54 49 4e 43 54 20 2d 20 2d 20 35 36 20 46 52 4f  TINCT - - 56 FRO
260c0 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
260d0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 35 36 0d 0a  col0..----..56..
260e0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
260f0 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20 2a  t..SELECT col1 *
26100 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
26110 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
26120 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 39 33 36 0d 0a  l1..----..1936..
26130 33 32 34 39 0d 0a 33 36 0d 0a 0d 0a 71 75 65 72  3249..36....quer
26140 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
26150 45 43 54 20 2d 20 2b 20 30 20 46 52 4f 4d 20 74  ECT - + 0 FROM t
26160 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
26170 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  1.col2..----..0.
26180 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49  .0..0....query I
26190 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
261a0 20 44 49 53 54 49 4e 43 54 20 31 31 20 41 53 20   DISTINCT 11 AS 
261b0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41  col1 FROM tab1 A
261c0 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
261d0 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 72 30 2e  cor0.col2, cor0.
261e0 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 31 0d 0a  col2..----..11..
261f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
26200 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
26210 37 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  70 FROM tab0 AS 
26220 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
26230 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d  l1, cor0.col0..-
26240 2d 2d 2d 0d 0a 2d 37 30 0d 0a 2d 37 30 0d 0a 2d  ---..-70..-70..-
26250 37 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  70....onlyif mys
26260 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
26270 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
26280 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
26290 20 6c 61 62 65 6c 2d 31 32 31 39 0d 0a 53 45 4c   label-1219..SEL
262a0 45 43 54 20 41 4c 4c 20 2d 20 43 41 53 54 28 20  ECT ALL - CAST( 
262b0 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
262c0 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50   FROM tab1 GROUP
262d0 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d   BY tab1.col1..-
262e0 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ---..NULL..NULL.
262f0 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
26300 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
26310 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
26320 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32  rowsort label-12
26330 31 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  19..SELECT ALL -
26340 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
26350 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74  INTEGER ) FROM t
26360 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
26370 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  1.col1..----..NU
26380 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  LL..NULL..NULL..
26390 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
263a0 74 0d 0a 53 45 4c 45 43 54 20 2b 20 35 36 20 2b  t..SELECT + 56 +
263b0 20 37 33 20 46 52 4f 4d 20 74 61 62 30 20 41 53   73 FROM tab0 AS
263c0 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
263d0 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  or0.col2..----..
263e0 31 32 39 0d 0a 31 32 39 0d 0a 31 32 39 0d 0a 0d  129..129..129...
263f0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
26400 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 31 20  ..SELECT + col1 
26410 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
26420 32 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  2 cor0 GROUP BY 
26430 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 31 0d 0a  col1..----..41..
26440 35 39 0d 0a 36 31 0d 0a 0d 0a 71 75 65 72 79 20  59..61....query 
26450 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
26460 54 20 2d 20 2d 20 36 30 20 41 53 20 63 6f 6c 31  T - - 60 AS col1
26470 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
26480 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d   BY tab2.col2..-
26490 2d 2d 2d 0d 0a 36 30 0d 0a 36 30 0d 0a 36 30 0d  ---..60..60..60.
264a0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
264b0 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 38 36 20  rt..SELECT - 86 
264c0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
264d0 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  2 AS cor0 GROUP 
264e0 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  BY cor0.col0..--
264f0 2d 2d 0d 0a 2d 38 36 0d 0a 2d 38 36 0d 0a 2d 38  --..-86..-86..-8
26500 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
26510 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
26520 20 2d 20 32 31 20 46 52 4f 4d 20 74 61 62 32 20   - 21 FROM tab2 
26530 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
26540 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   cor0.col1..----
26550 0d 0a 2d 32 31 0d 0a 2d 32 31 0d 0a 2d 32 31 0d  ..-21..-21..-21.
26560 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
26570 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
26580 4e 43 54 20 2b 20 2d 20 74 61 62 31 2e 63 6f 6c  NCT + - tab1.col
26590 32 20 2d 20 38 30 20 46 52 4f 4d 20 74 61 62 31  2 - 80 FROM tab1
265a0 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
265b0 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 35 0d  ol2..----..-125.
265c0 0a 2d 31 35 31 0d 0a 2d 38 38 0d 0a 0d 0a 71 75  .-151..-88....qu
265d0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
265e0 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 30  ELECT ALL - col0
265f0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
26600 62 32 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 30  b2 GROUP BY col0
26610 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 0d 0a 2d 39 31  ..----..-15..-91
26620 0d 0a 2d 39 32 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-92....query I
26630 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
26640 20 2b 20 63 6f 6c 31 20 2a 20 2b 20 32 32 20 2d   + col1 * + 22 -
26650 20 2d 20 33 31 20 2a 20 32 33 20 41 53 20 63 6f   - 31 * 23 AS co
26660 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  l0 FROM tab2 cor
26670 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
26680 63 6f 6c 31 2c 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d  col1, col0..----
26690 0d 0a 31 36 31 35 0d 0a 32 30 31 31 0d 0a 32 30  ..1615..2011..20
266a0 35 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  55....onlyif mys
266b0 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
266c0 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
266d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
266e0 20 6c 61 62 65 6c 2d 31 32 32 38 0d 0a 53 45 4c   label-1228..SEL
266f0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63  ECT DISTINCT + c
26700 6f 72 30 2e 63 6f 6c 31 20 44 49 56 20 36 32 20  or0.col1 DIV 62 
26710 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
26720 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
26730 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  col1..----..0...
26740 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
26750 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
26760 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
26770 6c 61 62 65 6c 2d 31 32 32 38 0d 0a 53 45 4c 45  label-1228..SELE
26780 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f  CT DISTINCT + co
26790 72 30 2e 63 6f 6c 31 20 2f 20 36 32 20 46 52 4f  r0.col1 / 62 FRO
267a0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
267b0 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
267c0 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75  1..----..0....qu
267d0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
267e0 45 4c 45 43 54 20 41 4c 4c 20 2b 20 39 30 20 41  ELECT ALL + 90 A
267f0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
26800 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
26810 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 39 30 0d 0a 39  ol1..----..90..9
26820 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
26830 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
26840 20 2b 20 37 20 41 53 20 63 6f 6c 31 20 46 52 4f   + 7 AS col1 FRO
26850 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47  M tab0 AS cor0 G
26860 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
26870 31 0d 0a 2d 2d 2d 2d 0d 0a 37 0d 0a 37 0d 0a 0d  1..----..7..7...
26880 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
26890 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
268a0 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
268b0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
268c0 6c 2d 31 32 33 31 0d 0a 53 45 4c 45 43 54 20 2d  l-1231..SELECT -
268d0 20 2d 20 74 61 62 32 2e 63 6f 6c 31 20 44 49 56   - tab2.col1 DIV
268e0 20 2d 20 74 61 62 32 2e 63 6f 6c 31 20 46 52 4f   - tab2.col1 FRO
268f0 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
26900 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab2.col1..----.
26910 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a 73  .-1..-1..-1....s
26920 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
26930 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
26940 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
26950 62 65 6c 2d 31 32 33 31 0d 0a 53 45 4c 45 43 54  bel-1231..SELECT
26960 20 2d 20 2d 20 74 61 62 32 2e 63 6f 6c 31 20 2f   - - tab2.col1 /
26970 20 2d 20 74 61 62 32 2e 63 6f 6c 31 20 46 52 4f   - tab2.col1 FRO
26980 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
26990 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab2.col1..----.
269a0 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a 6f  .-1..-1..-1....o
269b0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
269c0 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
269d0 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
269e0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
269f0 31 32 33 32 0d 0a 53 45 4c 45 43 54 20 44 49 53  1232..SELECT DIS
26a00 54 49 4e 43 54 20 2d 20 74 61 62 30 2e 63 6f 6c  TINCT - tab0.col
26a10 32 20 2b 20 39 33 20 44 49 56 20 2d 20 63 6f 6c  2 + 93 DIV - col
26a20 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  2 AS col0 FROM t
26a30 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab0 GROUP BY tab
26a40 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  0.col2..----..-2
26a50 37 0d 0a 2d 34 30 0d 0a 2d 38 30 0d 0a 0d 0a 73  7..-40..-80....s
26a60 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
26a70 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
26a80 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
26a90 62 65 6c 2d 31 32 33 32 0d 0a 53 45 4c 45 43 54  bel-1232..SELECT
26aa0 20 44 49 53 54 49 4e 43 54 20 2d 20 74 61 62 30   DISTINCT - tab0
26ab0 2e 63 6f 6c 32 20 2b 20 39 33 20 2f 20 2d 20 63  .col2 + 93 / - c
26ac0 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol2 AS col0 FROM
26ad0 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
26ae0 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  ab0.col2..----..
26af0 2d 32 37 0d 0a 2d 34 30 0d 0a 2d 38 30 0d 0a 0d  -27..-40..-80...
26b00 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
26b10 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
26b20 54 20 2d 20 36 35 20 41 53 20 63 6f 6c 31 20 46  T - 65 AS col1 F
26b30 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
26b40 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30   CROSS JOIN tab0
26b50 20 63 6f 72 31 20 47 52 4f 55 50 20 42 59 20 63   cor1 GROUP BY c
26b60 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  or0.col0..----..
26b70 2d 36 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -65....query I r
26b80 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
26b90 49 53 54 49 4e 43 54 20 63 6f 72 30 2e 63 6f 6c  ISTINCT cor0.col
26ba0 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  2 AS col1 FROM t
26bb0 61 62 32 20 41 53 20 63 6f 72 30 20 43 52 4f 53  ab2 AS cor0 CROS
26bc0 53 20 4a 4f 49 4e 20 74 61 62 31 20 63 6f 72 31  S JOIN tab1 cor1
26bd0 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
26be0 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 35 38 0d 0a 37  ol2..----..58..7
26bf0 39 0d 0a 38 37 0d 0a 0d 0a 73 6b 69 70 69 66 20  9..87....skipif 
26c00 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
26c10 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
26c20 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
26c30 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
26c40 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
26c50 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
26c60 43 54 20 2d 20 74 61 62 32 2e 63 6f 6c 32 20 63  CT - tab2.col2 c
26c70 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 47 52  ol2 FROM tab2 GR
26c80 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 32  OUP BY tab2.col2
26c90 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 38 0d 0a 2d 37 39  ..----..-58..-79
26ca0 0d 0a 2d 38 37 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-87....query I
26cb0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
26cc0 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 72 30   DISTINCT - cor0
26cd0 2e 63 6f 6c 31 20 2b 20 63 6f 72 30 2e 63 6f 6c  .col1 + cor0.col
26ce0 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
26cf0 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
26d00 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  0.col1..----..0.
26d10 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
26d20 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 39 30 20  rt..SELECT + 90 
26d30 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
26d40 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
26d50 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 39 30 0d 0a  col2..----..90..
26d60 39 30 0d 0a 39 30 0d 0a 0d 0a 71 75 65 72 79 20  90..90....query 
26d70 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
26d80 54 20 2b 20 39 37 20 41 53 20 63 6f 6c 32 20 46  T + 97 AS col2 F
26d90 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42  ROM tab2 GROUP B
26da0 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab2.col2..---
26db0 2d 0d 0a 39 37 0d 0a 39 37 0d 0a 39 37 0d 0a 0d  -..97..97..97...
26dc0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
26dd0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 36  ..SELECT ALL - 6
26de0 33 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55  3 FROM tab0 GROU
26df0 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a  P BY tab0.col2..
26e00 2d 2d 2d 2d 0d 0a 2d 36 33 0d 0a 2d 36 33 0d 0a  ----..-63..-63..
26e10 2d 36 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -63....query I r
26e20 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 33  owsort..SELECT 3
26e30 34 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  4 AS col2 FROM t
26e40 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab2 GROUP BY tab
26e50 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33 34  2.col2..----..34
26e60 0d 0a 33 34 0d 0a 33 34 0d 0a 0d 0a 73 6b 69 70  ..34..34....skip
26e70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
26e80 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
26e90 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
26ea0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
26eb0 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
26ec0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 37  sort..SELECT - 7
26ed0 30 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  0 col2 FROM tab2
26ee0 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63   GROUP BY tab2.c
26ef0 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 30 0d 0a  ol0..----..-70..
26f00 2d 37 30 0d 0a 2d 37 30 0d 0a 0d 0a 71 75 65 72  -70..-70....quer
26f10 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
26f20 45 43 54 20 32 36 20 2a 20 63 6f 6c 30 20 41 53  ECT 26 * col0 AS
26f30 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
26f40 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
26f50 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30   cor0.col1, cor0
26f60 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 31  .col0..----..111
26f70 38 0d 0a 32 31 35 38 0d 0a 36 37 36 0d 0a 0d 0a  8..2158..676....
26f80 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
26f90 0a 53 45 4c 45 43 54 20 2d 20 39 36 20 46 52 4f  .SELECT - 96 FRO
26fa0 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
26fb0 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab0.col1..----.
26fc0 0a 2d 39 36 0d 0a 2d 39 36 0d 0a 0d 0a 71 75 65  .-96..-96....que
26fd0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
26fe0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
26ff0 28 20 32 20 29 20 46 52 4f 4d 20 74 61 62 30 20  ( 2 ) FROM tab0 
27000 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
27010 20 63 6f 6c 32 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d   col2, col1..---
27020 2d 0d 0a 2d 32 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..-2....skipif 
27030 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
27040 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
27050 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
27060 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
27070 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
27080 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
27090 43 54 20 2b 20 33 33 20 2b 20 63 6f 6c 32 20 63  CT + 33 + col2 c
270a0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
270b0 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
270c0 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 6c 32 0d 0a  or0.col0, col2..
270d0 2d 2d 2d 2d 0d 0a 31 30 34 0d 0a 34 31 0d 0a 37  ----..104..41..7
270e0 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  8....skipif post
270f0 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
27100 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
27110 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
27120 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
27130 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
27140 45 4c 45 43 54 20 63 6f 72 31 2e 63 6f 6c 32 20  ELECT cor1.col2 
27150 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 63  col2 FROM tab1 c
27160 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
27170 61 62 32 20 41 53 20 63 6f 72 31 20 47 52 4f 55  ab2 AS cor1 GROU
27180 50 20 42 59 20 63 6f 72 31 2e 63 6f 6c 32 0d 0a  P BY cor1.col2..
27190 2d 2d 2d 2d 0d 0a 35 38 0d 0a 37 39 0d 0a 38 37  ----..58..79..87
271a0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
271b0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
271c0 2b 20 63 6f 72 30 2e 63 6f 6c 32 20 46 52 4f 4d  + cor0.col2 FROM
271d0 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52   tab0 AS cor0 GR
271e0 4f 55 50 20 42 59 20 63 6f 6c 32 2c 20 63 6f 72  OUP BY col2, cor
271f0 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c  0.col0, cor0.col
27200 30 0d 0a 2d 2d 2d 2d 0d 0a 32 34 0d 0a 33 38 0d  0..----..24..38.
27210 0a 37 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .79....query I r
27220 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
27230 20 63 6f 72 30 2e 63 6f 6c 32 20 46 52 4f 4d 20   cor0.col2 FROM 
27240 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f  tab0 AS cor0 GRO
27250 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c  UP BY cor0.col0,
27260 20 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 32   col2, cor0.col2
27270 0d 0a 2d 2d 2d 2d 0d 0a 32 34 0d 0a 33 38 0d 0a  ..----..24..38..
27280 37 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  79....query I ro
27290 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
272a0 4c 20 2d 20 28 20 2d 20 28 20 2d 20 63 6f 72 30  L - ( - ( - cor0
272b0 2e 63 6f 6c 31 20 29 20 29 20 41 53 20 63 6f 6c  .col1 ) ) AS col
272c0 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  1 FROM tab1 AS c
272d0 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
272e0 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34  0.col1..----..-4
272f0 34 0d 0a 2d 35 37 0d 0a 2d 36 0d 0a 0d 0a 6f 6e  4..-57..-6....on
27300 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
27310 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
27320 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
27330 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
27340 32 35 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  250..SELECT DIST
27350 49 4e 43 54 20 2b 20 43 41 53 54 28 20 4e 55 4c  INCT + CAST( NUL
27360 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53  L AS SIGNED ) AS
27370 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
27380 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f  GROUP BY tab0.co
27390 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  l1..----..NULL..
273a0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
273b0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
273c0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
273d0 20 6c 61 62 65 6c 2d 31 32 35 30 0d 0a 53 45 4c   label-1250..SEL
273e0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43  ECT DISTINCT + C
273f0 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
27400 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c 32 20  TEGER ) AS col2 
27410 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
27420 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab0.col1..--
27430 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  --..NULL....quer
27440 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
27450 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 74  ECT DISTINCT + t
27460 61 62 31 2e 63 6f 6c 32 20 2d 20 2d 20 33 20 41  ab1.col2 - - 3 A
27470 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
27480 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
27490 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 31 0d 0a 34  ol2..----..11..4
274a0 38 0d 0a 37 34 0d 0a 0d 0a 71 75 65 72 79 20 49  8..74....query I
274b0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
274c0 20 2b 20 2b 20 74 61 62 31 2e 63 6f 6c 30 20 2a   + + tab1.col0 *
274d0 20 31 37 20 2b 20 2b 20 74 61 62 31 2e 63 6f 6c   17 + + tab1.col
274e0 30 20 2a 20 74 61 62 31 2e 63 6f 6c 30 20 41 53  0 * tab1.col0 AS
274f0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
27500 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
27510 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 36 30 0d 0a  l0..----..1260..
27520 38 31 31 38 0d 0a 38 35 38 0d 0a 0d 0a 71 75 65  8118..858....que
27530 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
27540 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20 74 61 62  LECT ALL - - tab
27550 31 2e 63 6f 6c 32 20 2b 20 74 61 62 31 2e 63 6f  1.col2 + tab1.co
27560 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f  l2 FROM tab1 GRO
27570 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d  UP BY tab1.col2.
27580 0a 2d 2d 2d 2d 0d 0a 31 34 32 0d 0a 31 36 0d 0a  .----..142..16..
27590 39 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  90....query I ro
275a0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 33 33  wsort..SELECT 33
275b0 20 2b 20 35 36 20 46 52 4f 4d 20 74 61 62 30 20   + 56 FROM tab0 
275c0 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f  GROUP BY tab0.co
275d0 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 38 39 0d 0a 38 39  l0..----..89..89
275e0 0d 0a 38 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..89....query I 
275f0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
27600 44 49 53 54 49 4e 43 54 20 2b 20 33 20 2a 20 63  DISTINCT + 3 * c
27610 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol2 AS col0 FROM
27620 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52   tab0 AS cor0 GR
27630 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32  OUP BY cor0.col2
27640 0d 0a 2d 2d 2d 2d 0d 0a 31 31 34 0d 0a 32 33 37  ..----..114..237
27650 0d 0a 37 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..72....query I 
27660 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
27670 63 6f 72 30 2e 63 6f 6c 31 20 2a 20 2b 20 63 6f  cor0.col1 * + co
27680 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l1 FROM tab2 AS 
27690 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
276a0 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31  r0.col1..----..1
276b0 36 38 31 0d 0a 33 34 38 31 0d 0a 33 37 32 31 0d  681..3481..3721.
276c0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
276d0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
276e0 4e 43 54 20 63 6f 72 30 2e 63 6f 6c 31 20 2d 20  NCT cor0.col1 - 
276f0 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  - col1 FROM tab0
27700 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
27710 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y cor0.col1..---
27720 2d 0d 0a 30 0d 0a 31 36 32 0d 0a 0d 0a 73 6b 69  -..0..162....ski
27730 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
27740 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
27750 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
27760 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
27770 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
27780 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
27790 53 54 49 4e 43 54 20 2d 20 2b 20 74 61 62 31 2e  STINCT - + tab1.
277a0 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 30 20 63 6f  col0 + + col0 co
277b0 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f  l1 FROM tab1 GRO
277c0 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 30 0d  UP BY tab1.col0.
277d0 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72  .----..0....quer
277e0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
277f0 45 43 54 20 33 20 41 53 20 63 6f 6c 30 20 46 52  ECT 3 AS col0 FR
27800 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
27810 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
27820 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d  l0, cor0.col0..-
27830 2d 2d 2d 0d 0a 33 0d 0a 33 0d 0a 33 0d 0a 0d 0a  ---..3..3..3....
27840 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
27850 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 32 34  .SELECT ALL - 24
27860 20 2a 20 63 6f 72 30 2e 63 6f 6c 31 20 46 52 4f   * cor0.col1 FRO
27870 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47  M tab1 AS cor0 G
27880 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
27890 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 35 36 0d 0a  1..----..-1056..
278a0 2d 31 33 36 38 0d 0a 2d 31 34 34 0d 0a 0d 0a 6f  -1368..-144....o
278b0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
278c0 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
278d0 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
278e0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
278f0 31 32 36 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1261..SELECT ALL
27900 20 2b 20 37 32 20 44 49 56 20 63 6f 72 30 2e 63   + 72 DIV cor0.c
27910 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol2 AS col1 FROM
27920 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52   tab1 AS cor0 GR
27930 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d  OUP BY col2..---
27940 2d 0d 0a 31 0d 0a 31 0d 0a 39 0d 0a 0d 0a 73 6b  -..1..1..9....sk
27950 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
27960 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
27970 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
27980 65 6c 2d 31 32 36 31 0d 0a 53 45 4c 45 43 54 20  el-1261..SELECT 
27990 41 4c 4c 20 2b 20 37 32 20 2f 20 63 6f 72 30 2e  ALL + 72 / cor0.
279a0 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f  col2 AS col1 FRO
279b0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47  M tab1 AS cor0 G
279c0 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d  ROUP BY col2..--
279d0 2d 2d 0d 0a 31 0d 0a 31 0d 0a 39 0d 0a 0d 0a 71  --..1..1..9....q
279e0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
279f0 53 45 4c 45 43 54 20 2d 20 2d 20 31 36 20 2a 20  SELECT - - 16 * 
27a00 2b 20 74 61 62 32 2e 63 6f 6c 32 20 41 53 20 63  + tab2.col2 AS c
27a10 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 47 52  ol2 FROM tab2 GR
27a20 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 32  OUP BY tab2.col2
27a30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 36 34 0d 0a 31 33  ..----..1264..13
27a40 39 32 0d 0a 39 32 38 0d 0a 0d 0a 71 75 65 72 79  92..928....query
27a50 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
27a60 43 54 20 44 49 53 54 49 4e 43 54 20 74 61 62 32  CT DISTINCT tab2
27a70 2e 63 6f 6c 32 20 2a 20 2d 20 74 61 62 32 2e 63  .col2 * - tab2.c
27a80 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol2 AS col1 FROM
27a90 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 63   tab2 GROUP BY c
27aa0 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 33 36 34  ol2..----..-3364
27ab0 0d 0a 2d 36 32 34 31 0d 0a 2d 37 35 36 39 0d 0a  ..-6241..-7569..
27ac0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
27ad0 74 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e 63  t..SELECT cor0.c
27ae0 6f 6c 31 20 2b 20 63 6f 72 30 2e 63 6f 6c 30 20  ol1 + cor0.col0 
27af0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
27b00 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  0 AS cor0 GROUP 
27b10 42 59 20 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f  BY col0, cor0.co
27b20 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 32 34 0d 0a 32  l1..----..124..2
27b30 36 0d 0a 38 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  6..83....skipif 
27b40 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
27b50 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
27b60 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
27b70 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
27b80 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
27b90 74 0d 0a 53 45 4c 45 43 54 20 31 39 20 63 6f 6c  t..SELECT 19 col
27ba0 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  0 FROM tab2 GROU
27bb0 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  P BY col2..----.
27bc0 0a 31 39 0d 0a 31 39 0d 0a 31 39 0d 0a 0d 0a 71  .19..19..19....q
27bd0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
27be0 53 45 4c 45 43 54 20 2b 20 37 39 20 41 53 20 63  SELECT + 79 AS c
27bf0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol0 FROM tab1 GR
27c00 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 30  OUP BY tab1.col0
27c10 0d 0a 2d 2d 2d 2d 0d 0a 37 39 0d 0a 37 39 0d 0a  ..----..79..79..
27c20 37 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  79....query I ro
27c30 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
27c40 2b 20 74 61 62 32 2e 63 6f 6c 31 20 41 53 20 63  + tab2.col1 AS c
27c50 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52  ol0 FROM tab2 GR
27c60 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31  OUP BY tab2.col1
27c70 0d 0a 2d 2d 2d 2d 0d 0a 34 31 0d 0a 35 39 0d 0a  ..----..41..59..
27c80 36 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  61....query I ro
27c90 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 35 34  wsort..SELECT 54
27ca0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
27cb0 62 31 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31  b1 GROUP BY col1
27cc0 0d 0a 2d 2d 2d 2d 0d 0a 35 34 0d 0a 35 34 0d 0a  ..----..54..54..
27cd0 35 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  54....query I ro
27ce0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
27cf0 4c 20 2b 20 33 34 20 41 53 20 63 6f 6c 30 20 46  L + 34 AS col0 F
27d00 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
27d10 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y tab1.col1..---
27d20 2d 0d 0a 33 34 0d 0a 33 34 0d 0a 33 34 0d 0a 0d  -..34..34..34...
27d30 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
27d40 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 43 4f 41  ..SELECT - - COA
27d50 4c 45 53 43 45 20 28 20 2d 20 74 61 62 31 2e 63  LESCE ( - tab1.c
27d60 6f 6c 32 2c 20 2d 20 74 61 62 31 2e 63 6f 6c 32  ol2, - tab1.col2
27d70 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
27d80 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
27d90 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  b1.col2..----..-
27da0 34 35 0d 0a 2d 37 31 0d 0a 2d 38 0d 0a 0d 0a 71  45..-71..-8....q
27db0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
27dc0 53 45 4c 45 43 54 20 2b 20 38 33 20 2a 20 37 34  SELECT + 83 * 74
27dd0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
27de0 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31  b1 GROUP BY tab1
27df0 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 36 31 34  .col0..----..614
27e00 32 0d 0a 36 31 34 32 0d 0a 36 31 34 32 0d 0a 0d  2..6142..6142...
27e10 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
27e20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
27e30 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
27e40 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
27e50 6c 2d 31 32 37 32 0d 0a 53 45 4c 45 43 54 20 44  l-1272..SELECT D
27e60 49 53 54 49 4e 43 54 20 37 30 20 44 49 56 20 2b  ISTINCT 70 DIV +
27e70 20 31 36 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   16 AS col1 FROM
27e80 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74   tab2 GROUP BY t
27e90 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab2.col0..----..
27ea0 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  4....skipif mysq
27eb0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
27ec0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
27ed0 6f 72 74 20 6c 61 62 65 6c 2d 31 32 37 32 0d 0a  ort label-1272..
27ee0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
27ef0 37 30 20 2f 20 2b 20 31 36 20 41 53 20 63 6f 6c  70 / + 16 AS col
27f00 31 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  1 FROM tab2 GROU
27f10 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a  P BY tab2.col0..
27f20 2d 2d 2d 2d 0d 0a 34 0d 0a 0d 0a 71 75 65 72 79  ----..4....query
27f30 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
27f40 43 54 20 2d 20 74 61 62 31 2e 63 6f 6c 32 20 2a  CT - tab1.col2 *
27f50 20 2b 20 74 61 62 31 2e 63 6f 6c 32 20 41 53 20   + tab1.col2 AS 
27f60 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 47  col1 FROM tab1 G
27f70 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
27f80 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 32 35 0d 0a  2..----..-2025..
27f90 2d 35 30 34 31 0d 0a 2d 36 34 0d 0a 0d 0a 71 75  -5041..-64....qu
27fa0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
27fb0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
27fc0 20 74 61 62 31 2e 63 6f 6c 30 20 2d 20 2d 20 74   tab1.col0 - - t
27fd0 61 62 31 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 30  ab1.col0 AS col0
27fe0 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50   FROM tab1 GROUP
27ff0 20 42 59 20 74 61 62 31 2e 63 6f 6c 30 20 48 41   BY tab1.col0 HA
28000 56 49 4e 47 20 4e 4f 54 20 4e 55 4c 4c 20 3d 20  VING NOT NULL = 
28010 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b  NULL..----....sk
28020 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
28030 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
28040 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
28050 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
28060 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
28070 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
28080 49 53 54 49 4e 43 54 20 63 6f 72 30 2e 63 6f 6c  ISTINCT cor0.col
28090 30 20 2a 20 2d 20 63 6f 72 30 2e 63 6f 6c 30 20  0 * - cor0.col0 
280a0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41  col2 FROM tab0 A
280b0 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
280c0 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor0.col0..----.
280d0 0a 2d 31 38 34 39 0d 0a 2d 36 37 36 0d 0a 2d 36  .-1849..-676..-6
280e0 38 38 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  889....skipif po
280f0 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
28100 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
28110 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
28120 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
28130 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
28140 0a 53 45 4c 45 43 54 20 2d 20 2d 20 74 61 62 31  .SELECT - - tab1
28150 2e 63 6f 6c 31 20 2a 20 63 6f 6c 31 20 63 6f 6c  .col1 * col1 col
28160 32 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  2 FROM tab1 GROU
28170 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a  P BY tab1.col1..
28180 2d 2d 2d 2d 0d 0a 31 39 33 36 0d 0a 33 32 34 39  ----..1936..3249
28190 0d 0a 33 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..36....query I 
281a0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
281b0 41 4c 4c 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 72  ALL col0 * - cor
281c0 30 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  0.col1 FROM tab2
281d0 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
281e0 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72  Y cor0.col1, cor
281f0 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  0.col0..----..-3
28200 37 37 32 0d 0a 2d 35 33 36 39 0d 0a 2d 39 31 35  772..-5369..-915
28210 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
28220 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
28230 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
28240 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
28250 61 62 65 6c 2d 31 32 37 38 0d 0a 53 45 4c 45 43  abel-1278..SELEC
28260 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c  T DISTINCT + col
28270 30 20 44 49 56 20 63 6f 6c 30 20 41 53 20 63 6f  0 DIV col0 AS co
28280 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f  l2 FROM tab2 GRO
28290 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d  UP BY tab2.col0.
282a0 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 73 6b 69 70  .----..1....skip
282b0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
282c0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
282d0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
282e0 2d 31 32 37 38 0d 0a 53 45 4c 45 43 54 20 44 49  -1278..SELECT DI
282f0 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 2f 20  STINCT + col0 / 
28300 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f  col0 AS col2 FRO
28310 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
28320 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab2.col0..----.
28330 0a 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  .1....onlyif mys
28340 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
28350 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
28360 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
28370 20 6c 61 62 65 6c 2d 31 32 37 39 0d 0a 53 45 4c   label-1279..SEL
28380 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43  ECT DISTINCT + C
28390 41 53 54 28 20 2d 20 33 20 41 53 20 53 49 47 4e  AST( - 3 AS SIGN
283a0 45 44 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f  ED ) AS col0 FRO
283b0 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
283c0 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab0.col0..----.
283d0 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .-3....skipif my
283e0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
283f0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
28400 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 37 39  wsort label-1279
28410 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
28420 54 20 2b 20 43 41 53 54 20 28 20 2d 20 33 20 41  T + CAST ( - 3 A
28430 53 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63  S INTEGER ) AS c
28440 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol0 FROM tab0 GR
28450 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30  OUP BY tab0.col0
28460 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 71 75  ..----..-3....qu
28470 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
28480 45 4c 45 43 54 20 39 37 20 41 53 20 63 6f 6c 31  ELECT 97 AS col1
28490 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
284a0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
284b0 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 39 37 0d  .col1..----..97.
284c0 0a 39 37 0d 0a 39 37 0d 0a 0d 0a 71 75 65 72 79  .97..97....query
284d0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
284e0 43 54 20 32 37 20 46 52 4f 4d 20 74 61 62 32 20  CT 27 FROM tab2 
284f0 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
28500 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 37 0d 0a 32 37  l0..----..27..27
28510 0d 0a 32 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..27....query I 
28520 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
28530 2d 20 28 20 2b 20 32 20 29 20 41 53 20 63 6f 6c  - ( + 2 ) AS col
28540 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
28550 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
28560 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  0.col2..----..-2
28570 0d 0a 2d 32 0d 0a 2d 32 0d 0a 0d 0a 71 75 65 72  ..-2..-2....quer
28580 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
28590 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 38  ECT DISTINCT - 8
285a0 33 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  3 AS col0 FROM t
285b0 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
285c0 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  P BY cor0.col0..
285d0 2d 2d 2d 2d 0d 0a 2d 38 33 0d 0a 0d 0a 71 75 65  ----..-83....que
285e0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
285f0 4c 45 43 54 20 37 38 20 41 53 20 63 6f 6c 31 20  LECT 78 AS col1 
28600 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
28610 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 2c  0 GROUP BY col1,
28620 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   cor0.col1..----
28630 0d 0a 37 38 0d 0a 37 38 0d 0a 37 38 0d 0a 0d 0a  ..78..78..78....
28640 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
28650 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
28660 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
28670 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
28680 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
28690 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
286a0 20 33 35 20 2b 20 2d 20 63 6f 72 30 2e 63 6f 6c   35 + - cor0.col
286b0 32 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  2 col1 FROM tab2
286c0 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
286d0 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y cor0.col2..---
286e0 2d 0d 0a 2d 32 33 0d 0a 2d 34 34 0d 0a 2d 35 32  -..-23..-44..-52
286f0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
28700 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20  ort..SELECT - - 
28710 39 35 20 2a 20 2d 20 74 61 62 32 2e 63 6f 6c 32  95 * - tab2.col2
28720 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
28730 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d   BY tab2.col2..-
28740 2d 2d 2d 0d 0a 2d 35 35 31 30 0d 0a 2d 37 35 30  ---..-5510..-750
28750 35 0d 0a 2d 38 32 36 35 0d 0a 0d 0a 71 75 65 72  5..-8265....quer
28760 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
28770 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63  ECT DISTINCT - c
28780 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol2 AS col2 FROM
28790 20 74 61 62 30 20 63 6f 72 30 20 47 52 4f 55 50   tab0 cor0 GROUP
287a0 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d   BY cor0.col2..-
287b0 2d 2d 2d 0d 0a 2d 32 34 0d 0a 2d 33 38 0d 0a 2d  ---..-24..-38..-
287c0 37 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  79....query I ro
287d0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
287e0 6c 32 20 2a 20 74 61 62 31 2e 63 6f 6c 32 20 41  l2 * tab1.col2 A
287f0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
28800 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
28810 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32 30 32 35 0d  ol2..----..2025.
28820 0a 35 30 34 31 0d 0a 36 34 0d 0a 0d 0a 71 75 65  .5041..64....que
28830 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
28840 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
28850 2d 20 74 61 62 32 2e 63 6f 6c 30 20 41 53 20 63  - tab2.col0 AS c
28860 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 47 52  ol2 FROM tab2 GR
28870 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30  OUP BY tab2.col0
28880 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 39 31 0d 0a  ..----..15..91..
28890 39 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  92....query I ro
288a0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
288b0 72 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20  r0.col2 AS col1 
288c0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
288d0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
288e0 63 6f 6c 31 2c 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d  col1, col2..----
288f0 0d 0a 34 35 0d 0a 37 31 0d 0a 38 0d 0a 0d 0a 71  ..45..71..8....q
28900 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
28910 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
28920 37 31 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f  71 FROM tab0 GRO
28930 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d  UP BY tab0.col1.
28940 0a 2d 2d 2d 2d 0d 0a 37 31 0d 0a 0d 0a 71 75 65  .----..71....que
28950 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
28960 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
28970 28 20 2d 20 37 31 20 29 20 2a 20 2d 20 74 61 62  ( - 71 ) * - tab
28980 31 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  1.col2 FROM tab1
28990 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
289a0 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33 31 39 35 0d  ol2..----..3195.
289b0 0a 35 30 34 31 0d 0a 35 36 38 0d 0a 0d 0a 71 75  .5041..568....qu
289c0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
289d0 45 4c 45 43 54 20 2b 20 74 61 62 31 2e 63 6f 6c  ELECT + tab1.col
289e0 32 20 2a 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31  2 * col2 AS col1
289f0 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50   FROM tab1 GROUP
28a00 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d   BY tab1.col2..-
28a10 2d 2d 2d 0d 0a 32 30 32 35 0d 0a 35 30 34 31 0d  ---..2025..5041.
28a20 0a 36 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .64....query I r
28a30 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
28a40 4c 4c 20 74 61 62 32 2e 63 6f 6c 30 20 41 53 20  LL tab2.col0 AS 
28a50 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 47  col0 FROM tab2 G
28a60 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
28a70 30 20 48 41 56 49 4e 47 20 28 20 4e 55 4c 4c 20  0 HAVING ( NULL 
28a80 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  ) IS NULL..----.
28a90 0a 31 35 0d 0a 39 31 0d 0a 39 32 0d 0a 0d 0a 71  .15..91..92....q
28aa0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
28ab0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
28ac0 39 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  9 FROM tab2 AS c
28ad0 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
28ae0 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 39 0d  0.col2..----..9.
28af0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
28b00 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 28 20 2d  rt..SELECT + ( -
28b10 20 63 6f 72 30 2e 63 6f 6c 32 20 29 20 41 53 20   cor0.col2 ) AS 
28b20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
28b30 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
28b40 63 6f 6c 32 2c 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d  col2, col0..----
28b50 0d 0a 2d 34 35 0d 0a 2d 37 31 0d 0a 2d 38 0d 0a  ..-45..-71..-8..
28b60 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
28b70 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
28b80 74 61 62 30 2e 63 6f 6c 30 20 41 53 20 63 6f 6c  tab0.col0 AS col
28b90 30 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55  0 FROM tab0 GROU
28ba0 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a  P BY tab0.col0..
28bb0 2d 2d 2d 2d 0d 0a 32 36 0d 0a 34 33 0d 0a 38 33  ----..26..43..83
28bc0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
28bd0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
28be0 33 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  32 AS col1 FROM 
28bf0 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f  tab1 AS cor0 GRO
28c00 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d  UP BY cor0.col1.
28c10 0a 2d 2d 2d 2d 0d 0a 33 32 0d 0a 33 32 0d 0a 33  .----..32..32..3
28c20 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  2....skipif post
28c30 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
28c40 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
28c50 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
28c60 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
28c70 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
28c80 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
28c90 20 35 34 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   54 col0 FROM ta
28ca0 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
28cb0 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d   BY cor0.col1..-
28cc0 2d 2d 2d 0d 0a 35 34 0d 0a 0d 0a 6f 6e 6c 79 69  ---..54....onlyi
28cd0 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
28ce0 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
28cf0 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
28d00 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 33 30 30  wsort label-1300
28d10 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 74  ..SELECT ALL + t
28d20 61 62 30 2e 63 6f 6c 30 20 44 49 56 20 2b 20 74  ab0.col0 DIV + t
28d30 61 62 30 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 31  ab0.col0 AS col1
28d40 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
28d50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d   BY tab0.col0..-
28d60 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a  ---..1..1..1....
28d70 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
28d80 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
28d90 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
28da0 61 62 65 6c 2d 31 33 30 30 0d 0a 53 45 4c 45 43  abel-1300..SELEC
28db0 54 20 41 4c 4c 20 2b 20 74 61 62 30 2e 63 6f 6c  T ALL + tab0.col
28dc0 30 20 2f 20 2b 20 74 61 62 30 2e 63 6f 6c 30 20  0 / + tab0.col0 
28dd0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
28de0 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
28df0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31  col0..----..1..1
28e00 0d 0a 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..1....query I r
28e10 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
28e20 49 53 54 49 4e 43 54 20 2b 20 2b 20 28 20 74 61  ISTINCT + + ( ta
28e30 62 31 2e 63 6f 6c 32 20 29 20 2b 20 2d 20 74 61  b1.col2 ) + - ta
28e40 62 31 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20  b1.col2 AS col1 
28e50 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20  FROM tab1 GROUP 
28e60 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d  BY tab1.col2..--
28e70 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49  --..0....query I
28e80 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
28e90 20 2d 20 2d 20 34 34 20 41 53 20 63 6f 6c 32 20   - - 44 AS col2 
28ea0 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
28eb0 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d  BY tab0.col0..--
28ec0 2d 2d 0d 0a 34 34 0d 0a 34 34 0d 0a 34 34 0d 0a  --..44..44..44..
28ed0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
28ee0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
28ef0 37 37 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  77 AS col0 FROM 
28f00 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f  tab1 AS cor0 GRO
28f10 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d  UP BY cor0.col1.
28f20 0a 2d 2d 2d 2d 0d 0a 37 37 0d 0a 37 37 0d 0a 37  .----..77..77..7
28f30 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  7....query I row
28f40 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
28f50 20 2d 20 63 6f 72 31 2e 63 6f 6c 31 20 41 53 20   - cor1.col1 AS 
28f60 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
28f70 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49  S cor0 CROSS JOI
28f80 4e 20 74 61 62 31 20 41 53 20 63 6f 72 31 20 47  N tab1 AS cor1 G
28f90 52 4f 55 50 20 42 59 20 63 6f 72 31 2e 63 6f 6c  ROUP BY cor1.col
28fa0 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 34 0d 0a 2d 35  1..----..-44..-5
28fb0 37 0d 0a 2d 36 0d 0a 0d 0a 73 6b 69 70 69 66 20  7..-6....skipif 
28fc0 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
28fd0 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
28fe0 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
28ff0 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
29000 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
29010 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
29020 43 54 20 2b 20 2d 20 74 61 62 31 2e 63 6f 6c 30  CT + - tab1.col0
29030 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
29040 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
29050 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 0d 0a 2d  l0..----..-22..-
29060 32 38 0d 0a 2d 38 32 0d 0a 0d 0a 71 75 65 72 79  28..-82....query
29070 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
29080 43 54 20 2b 20 39 32 20 46 52 4f 4d 20 74 61 62  CT + 92 FROM tab
29090 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
290a0 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  BY cor0.col0..--
290b0 2d 2d 0d 0a 39 32 0d 0a 39 32 0d 0a 39 32 0d 0a  --..92..92..92..
290c0 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
290d0 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
290e0 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
290f0 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
29100 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
29110 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
29120 43 54 20 74 61 62 32 2e 63 6f 6c 30 20 63 6f 6c  CT tab2.col0 col
29130 31 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  1 FROM tab2 GROU
29140 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  P BY col0..----.
29150 0a 31 35 0d 0a 39 31 0d 0a 39 32 0d 0a 0d 0a 71  .15..91..92....q
29160 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
29170 53 45 4c 45 43 54 20 2d 20 35 39 20 41 53 20 63  SELECT - 59 AS c
29180 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol0 FROM tab0 GR
29190 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30  OUP BY tab0.col0
291a0 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 39 0d 0a 2d 35 39  ..----..-59..-59
291b0 0d 0a 2d 35 39 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-59....query I
291c0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
291d0 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20   + col2 AS col1 
291e0 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
291f0 42 59 20 74 61 62 32 2e 63 6f 6c 32 20 48 41 56  BY tab2.col2 HAV
29200 49 4e 47 20 28 20 4e 55 4c 4c 20 29 20 3e 20 4e  ING ( NULL ) > N
29210 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
29220 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
29230 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
29240 74 61 62 31 2e 63 6f 6c 31 20 2d 20 2d 20 74 61  tab1.col1 - - ta
29250 62 31 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20  b1.col1 AS col0 
29260 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20  FROM tab1 GROUP 
29270 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab1.col1..--
29280 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49  --..0....query I
29290 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
292a0 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30   DISTINCT - col0
292b0 20 2a 20 2b 20 38 35 20 46 52 4f 4d 20 74 61 62   * + 85 FROM tab
292c0 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
292d0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 37  col0..----..-187
292e0 30 0d 0a 2d 32 33 38 30 0d 0a 2d 36 39 37 30 0d  0..-2380..-6970.
292f0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
29300 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e  rt..SELECT cor0.
29310 63 6f 6c 30 20 2a 20 32 36 20 2d 20 2b 20 63 6f  col0 * 26 - + co
29320 72 30 2e 63 6f 6c 32 20 2a 20 39 39 20 46 52 4f  r0.col2 * 99 FRO
29330 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47  M tab1 AS cor0 G
29340 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
29350 32 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  2, cor0.col0..--
29360 2d 2d 0d 0a 2d 32 32 30 0d 0a 2d 33 37 32 37 0d  --..-220..-3727.
29370 0a 2d 34 38 39 37 0d 0a 0d 0a 71 75 65 72 79 20  .-4897....query 
29380 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
29390 54 20 2b 20 32 32 20 41 53 20 63 6f 6c 31 20 46  T + 22 AS col1 F
293a0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
293b0 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
293c0 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32  ol0..----..22..2
293d0 32 0d 0a 32 32 0d 0a 0d 0a 71 75 65 72 79 20 49  2..22....query I
293e0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
293f0 20 41 4c 4c 20 2d 20 63 6f 72 30 2e 63 6f 6c 31   ALL - cor0.col1
29400 20 2b 20 36 36 20 41 53 20 63 6f 6c 30 20 46 52   + 66 AS col0 FR
29410 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
29420 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
29430 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 0d 0a 36  l1..----..-15..6
29440 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
29450 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 28 20 2b  sort..SELECT ( +
29460 20 32 31 20 29 20 41 53 20 63 6f 6c 31 20 46 52   21 ) AS col1 FR
29470 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 47 52 4f  OM tab1 cor0 GRO
29480 55 50 20 42 59 20 63 6f 6c 32 2c 20 63 6f 6c 31  UP BY col2, col1
29490 0d 0a 2d 2d 2d 2d 0d 0a 32 31 0d 0a 32 31 0d 0a  ..----..21..21..
294a0 32 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  21....skipif pos
294b0 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
294c0 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
294d0 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
294e0 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
294f0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
29500 53 45 4c 45 43 54 20 2d 20 2d 20 34 34 20 63 6f  SELECT - - 44 co
29510 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f  l2 FROM tab2 GRO
29520 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d  UP BY tab2.col0.
29530 0a 2d 2d 2d 2d 0d 0a 34 34 0d 0a 34 34 0d 0a 34  .----..44..44..4
29540 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  4....query I row
29550 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
29560 20 63 6f 72 30 2e 63 6f 6c 30 20 41 53 20 63 6f   cor0.col0 AS co
29570 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
29580 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
29590 72 30 2e 63 6f 6c 30 20 48 41 56 49 4e 47 20 4e  r0.col0 HAVING N
295a0 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ULL IS NOT NULL.
295b0 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
295c0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
295d0 20 41 4c 4c 20 2d 20 38 38 20 46 52 4f 4d 20 74   ALL - 88 FROM t
295e0 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab0 GROUP BY tab
295f0 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 38  0.col1..----..-8
29600 38 0d 0a 2d 38 38 0d 0a 0d 0a 71 75 65 72 79 20  8..-88....query 
29610 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
29620 54 20 74 61 62 30 2e 63 6f 6c 32 20 2d 20 74 61  T tab0.col2 - ta
29630 62 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  b0.col2 FROM tab
29640 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
29650 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30  col2..----..0..0
29660 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  ..0....skipif po
29670 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
29680 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
29690 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
296a0 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
296b0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
296c0 0a 53 45 4c 45 43 54 20 2b 20 74 61 62 30 2e 63  .SELECT + tab0.c
296d0 6f 6c 32 20 2a 20 74 61 62 30 2e 63 6f 6c 32 20  ol2 * tab0.col2 
296e0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 47  col0 FROM tab0 G
296f0 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c  ROUP BY tab0.col
29700 32 0d 0a 2d 2d 2d 2d 0d 0a 31 34 34 34 0d 0a 35  2..----..1444..5
29710 37 36 0d 0a 36 32 34 31 0d 0a 0d 0a 71 75 65 72  76..6241....quer
29720 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
29730 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 35  ECT DISTINCT + 5
29740 32 20 2b 20 63 6f 72 30 2e 63 6f 6c 32 20 41 53  2 + cor0.col2 AS
29750 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
29760 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
29770 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   cor0.col2..----
29780 0d 0a 31 33 31 0d 0a 37 36 0d 0a 39 30 0d 0a 0d  ..131..76..90...
29790 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
297a0 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 74 61 62  ..SELECT + - tab
297b0 30 2e 63 6f 6c 32 20 2d 20 2d 20 74 61 62 30 2e  0.col2 - - tab0.
297c0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47  col2 FROM tab0 G
297d0 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c  ROUP BY tab0.col
297e0 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30  2..----..0..0..0
297f0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
29800 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20  ort..SELECT + + 
29810 33 33 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f  33 FROM tab0 GRO
29820 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d  UP BY tab0.col2.
29830 0a 2d 2d 2d 2d 0d 0a 33 33 0d 0a 33 33 0d 0a 33  .----..33..33..3
29840 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  3....skipif post
29850 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
29860 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
29870 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
29880 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
29890 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
298a0 45 4c 45 43 54 20 41 4c 4c 20 2d 20 38 30 20 63  ELECT ALL - 80 c
298b0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol1 FROM tab0 GR
298c0 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32  OUP BY tab0.col2
298d0 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 30 0d 0a 2d 38 30  ..----..-80..-80
298e0 0d 0a 2d 38 30 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-80....query I
298f0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
29900 20 2d 20 2b 20 74 61 62 31 2e 63 6f 6c 31 20 41   - + tab1.col1 A
29910 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
29920 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
29930 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 34 0d 0a  ol1..----..-44..
29940 2d 35 37 0d 0a 2d 36 0d 0a 0d 0a 71 75 65 72 79  -57..-6....query
29950 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
29960 43 54 20 63 6f 72 30 2e 63 6f 6c 30 20 2a 20 2b  CT cor0.col0 * +
29970 20 63 6f 72 30 2e 63 6f 6c 30 20 41 53 20 63 6f   cor0.col0 AS co
29980 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
29990 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
299a0 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f  r0.col0, cor0.co
299b0 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d  l2, cor0.col0..-
299c0 2d 2d 2d 0d 0a 34 38 34 0d 0a 36 37 32 34 0d 0a  ---..484..6724..
299d0 37 38 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  784....onlyif my
299e0 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
299f0 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
29a00 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
29a10 74 20 6c 61 62 65 6c 2d 31 33 32 37 0d 0a 53 45  t label-1327..SE
29a20 4c 45 43 54 20 2d 20 74 61 62 32 2e 63 6f 6c 32  LECT - tab2.col2
29a30 20 44 49 56 20 2b 20 34 34 20 46 52 4f 4d 20 74   DIV + 44 FROM t
29a40 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab2 GROUP BY tab
29a50 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  2.col2..----..-1
29a60 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a 73 6b 69 70  ..-1..-1....skip
29a70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
29a80 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
29a90 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
29aa0 2d 31 33 32 37 0d 0a 53 45 4c 45 43 54 20 2d 20  -1327..SELECT - 
29ab0 74 61 62 32 2e 63 6f 6c 32 20 2f 20 2b 20 34 34  tab2.col2 / + 44
29ac0 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
29ad0 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d   BY tab2.col2..-
29ae0 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d  ---..-1..-1..-1.
29af0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
29b00 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
29b10 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
29b20 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
29b30 62 65 6c 2d 31 33 32 38 0d 0a 53 45 4c 45 43 54  bel-1328..SELECT
29b40 20 74 61 62 31 2e 63 6f 6c 32 20 2a 20 2d 20 43   tab1.col2 * - C
29b50 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
29b60 4e 45 44 20 29 20 41 53 20 63 6f 6c 31 20 46 52  NED ) AS col1 FR
29b70 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
29b80 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   tab1.col2..----
29b90 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
29ba0 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
29bb0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
29bc0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
29bd0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 33 32 38 0d  sort label-1328.
29be0 0a 53 45 4c 45 43 54 20 74 61 62 31 2e 63 6f 6c  .SELECT tab1.col
29bf0 32 20 2a 20 2d 20 43 41 53 54 20 28 20 4e 55 4c  2 * - CAST ( NUL
29c00 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41  L AS INTEGER ) A
29c10 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
29c20 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
29c30 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ol2..----..NULL.
29c40 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .NULL..NULL....s
29c50 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
29c60 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
29c70 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
29c80 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
29c90 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
29ca0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
29cb0 63 6f 6c 30 20 2b 20 63 6f 72 30 2e 63 6f 6c 30  col0 + cor0.col0
29cc0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
29cd0 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
29ce0 20 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 72 30   cor0.col2, cor0
29cf0 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 32  .col0..----..182
29d00 0d 0a 31 38 34 0d 0a 33 30 0d 0a 0d 0a 71 75 65  ..184..30....que
29d10 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
29d20 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c 32 20 2b  LECT cor0.col2 +
29d30 20 63 6f 72 30 2e 63 6f 6c 31 20 46 52 4f 4d 20   cor0.col1 FROM 
29d40 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f  tab0 AS cor0 GRO
29d50 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 2c  UP BY cor0.col2,
29d60 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   cor0.col1..----
29d70 0d 0a 31 30 35 0d 0a 33 38 0d 0a 37 39 0d 0a 0d  ..105..38..79...
29d80 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
29d90 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 39  ..SELECT ALL + 9
29da0 37 20 2b 20 74 61 62 30 2e 63 6f 6c 31 20 41 53  7 + tab0.col1 AS
29db0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
29dc0 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a 2d  GROUP BY col1..-
29dd0 2d 2d 2d 0d 0a 31 37 38 0d 0a 39 37 0d 0a 0d 0a  ---..178..97....
29de0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
29df0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
29e00 20 2b 20 2d 20 37 31 20 46 52 4f 4d 20 74 61 62   + - 71 FROM tab
29e10 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
29e20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 31 0d  col0..----..-71.
29e30 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
29e40 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 72  rt..SELECT - cor
29e50 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  0.col2 FROM tab1
29e60 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
29e70 59 20 63 6f 6c 32 2c 20 63 6f 6c 31 0d 0a 2d 2d  Y col2, col1..--
29e80 2d 2d 0d 0a 2d 34 35 0d 0a 2d 37 31 0d 0a 2d 38  --..-45..-71..-8
29e90 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
29ea0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20  ort..SELECT - - 
29eb0 74 61 62 32 2e 63 6f 6c 31 20 2b 20 74 61 62 32  tab2.col1 + tab2
29ec0 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20  .col1 FROM tab2 
29ed0 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
29ee0 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 31 38 0d 0a 31  l1..----..118..1
29ef0 32 32 0d 0a 38 32 0d 0a 0d 0a 71 75 65 72 79 20  22..82....query 
29f00 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
29f10 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 72  T DISTINCT - cor
29f20 30 2e 63 6f 6c 31 20 2a 20 2b 20 28 20 34 34 20  0.col1 * + ( 44 
29f30 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
29f40 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
29f50 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  0.col1..----..-3
29f60 35 36 34 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  564..0....query 
29f70 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
29f80 54 20 41 4c 4c 20 2d 20 63 6f 72 30 2e 63 6f 6c  T ALL - cor0.col
29f90 32 20 2b 20 2d 20 31 35 20 46 52 4f 4d 20 74 61  2 + - 15 FROM ta
29fa0 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b1 AS cor0 GROUP
29fb0 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a   BY col2..----..
29fc0 2d 32 33 0d 0a 2d 36 30 0d 0a 2d 38 36 0d 0a 0d  -23..-60..-86...
29fd0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
29fe0 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
29ff0 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
2a000 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2a010 6c 2d 31 33 33 37 0d 0a 53 45 4c 45 43 54 20 41  l-1337..SELECT A
2a020 4c 4c 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53  LL CAST( NULL AS
2a030 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74   SIGNED ) FROM t
2a040 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab0 GROUP BY tab
2a050 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  0.col2..----..NU
2a060 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  LL..NULL..NULL..
2a070 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2a080 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2a090 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2a0a0 20 6c 61 62 65 6c 2d 31 33 33 37 0d 0a 53 45 4c   label-1337..SEL
2a0b0 45 43 54 20 41 4c 4c 20 43 41 53 54 20 28 20 4e  ECT ALL CAST ( N
2a0c0 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
2a0d0 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
2a0e0 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d   BY tab0.col2..-
2a0f0 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ---..NULL..NULL.
2a100 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49  .NULL....query I
2a110 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2a120 20 41 4c 4c 20 2d 20 38 35 20 2a 20 2b 20 33 31   ALL - 85 * + 31
2a130 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
2a140 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30  b0 GROUP BY tab0
2a150 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 36  .col1..----..-26
2a160 33 35 0d 0a 2d 32 36 33 35 0d 0a 0d 0a 71 75 65  35..-2635....que
2a170 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2a180 4c 45 43 54 20 4e 55 4c 4c 49 46 20 28 20 2d 20  LECT NULLIF ( - 
2a190 74 61 62 30 2e 63 6f 6c 32 2c 20 2b 20 31 32 20  tab0.col2, + 12 
2a1a0 29 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55  ) FROM tab0 GROU
2a1b0 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  P BY col2..----.
2a1c0 0a 2d 32 34 0d 0a 2d 33 38 0d 0a 2d 37 39 0d 0a  .-24..-38..-79..
2a1d0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2a1e0 74 0d 0a 53 45 4c 45 43 54 20 2b 20 74 61 62 31  t..SELECT + tab1
2a1f0 2e 63 6f 6c 30 20 2a 20 2b 20 74 61 62 31 2e 63  .col0 * + tab1.c
2a200 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol0 AS col2 FROM
2a210 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74   tab1 GROUP BY t
2a220 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab1.col0..----..
2a230 34 38 34 0d 0a 36 37 32 34 0d 0a 37 38 34 0d 0a  484..6724..784..
2a240 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2a250 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31  t..SELECT - col1
2a260 20 2a 20 35 38 20 2b 20 2d 20 74 61 62 30 2e 63   * 58 + - tab0.c
2a270 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol1 FROM tab0 GR
2a280 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 31  OUP BY tab0.col1
2a290 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 37 37 39 0d 0a 30  ..----..-4779..0
2a2a0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2a2b0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 74 61 62 31  ort..SELECT tab1
2a2c0 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52  .col2 AS col2 FR
2a2d0 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
2a2e0 20 74 61 62 31 2e 63 6f 6c 32 20 48 41 56 49 4e   tab1.col2 HAVIN
2a2f0 47 20 28 20 4e 55 4c 4c 20 29 20 42 45 54 57 45  G ( NULL ) BETWE
2a300 45 4e 20 28 20 4e 55 4c 4c 20 29 20 41 4e 44 20  EN ( NULL ) AND 
2a310 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
2a320 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2a330 45 4c 45 43 54 20 2b 20 74 61 62 32 2e 63 6f 6c  ELECT + tab2.col
2a340 30 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  0 FROM tab2 WHER
2a350 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 4f  E NOT NULL IS NO
2a360 54 20 4e 55 4c 4c 20 47 52 4f 55 50 20 42 59 20  T NULL GROUP BY 
2a370 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab2.col0..----.
2a380 0a 31 35 0d 0a 39 31 0d 0a 39 32 0d 0a 0d 0a 71  .15..91..92....q
2a390 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2a3a0 53 45 4c 45 43 54 20 2b 20 74 61 62 32 2e 63 6f  SELECT + tab2.co
2a3b0 6c 31 20 2b 20 2b 20 74 61 62 32 2e 63 6f 6c 31  l1 + + tab2.col1
2a3c0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
2a3d0 62 32 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31  b2 GROUP BY col1
2a3e0 0d 0a 2d 2d 2d 2d 0d 0a 31 31 38 0d 0a 31 32 32  ..----..118..122
2a3f0 0d 0a 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..82....query I 
2a400 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2a410 44 49 53 54 49 4e 43 54 20 2d 20 31 37 20 46 52  DISTINCT - 17 FR
2a420 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59  OM tab0 GROUP BY
2a430 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   tab0.col1..----
2a440 0d 0a 2d 31 37 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-17....query I
2a450 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2a460 20 44 49 53 54 49 4e 43 54 20 37 32 20 46 52 4f   DISTINCT 72 FRO
2a470 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
2a480 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 37 32 0d 0a  col2..----..72..
2a490 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2a4a0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
2a4b0 74 61 62 32 2e 63 6f 6c 32 20 2a 20 2d 20 74 61  tab2.col2 * - ta
2a4c0 62 32 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  b2.col2 FROM tab
2a4d0 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
2a4e0 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33 33 36 34  col2..----..3364
2a4f0 0d 0a 36 32 34 31 0d 0a 37 35 36 39 0d 0a 0d 0a  ..6241..7569....
2a500 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2a510 0a 53 45 4c 45 43 54 20 2b 20 74 61 62 32 2e 63  .SELECT + tab2.c
2a520 6f 6c 30 20 2b 20 2d 20 74 61 62 32 2e 63 6f 6c  ol0 + - tab2.col
2a530 30 20 2a 20 74 61 62 32 2e 63 6f 6c 30 20 46 52  0 * tab2.col0 FR
2a540 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
2a550 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   tab2.col0..----
2a560 0d 0a 2d 32 31 30 0d 0a 2d 38 31 39 30 0d 0a 2d  ..-210..-8190..-
2a570 38 33 37 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  8372....skipif p
2a580 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
2a590 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
2a5a0 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
2a5b0 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
2a5c0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2a5d0 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 74 61 62  ..SELECT - + tab
2a5e0 32 2e 63 6f 6c 30 20 63 6f 6c 31 20 46 52 4f 4d  2.col0 col1 FROM
2a5f0 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74   tab2 GROUP BY t
2a600 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab2.col0..----..
2a610 2d 31 35 0d 0a 2d 39 31 0d 0a 2d 39 32 0d 0a 0d  -15..-91..-92...
2a620 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2a630 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e 63 6f  ..SELECT cor0.co
2a640 6c 30 20 2a 20 63 6f 72 30 2e 63 6f 6c 30 20 41  l0 * cor0.col0 A
2a650 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
2a660 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
2a670 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y cor0.col0..---
2a680 2d 0d 0a 34 38 34 0d 0a 36 37 32 34 0d 0a 37 38  -..484..6724..78
2a690 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  4....query I row
2a6a0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
2a6b0 54 49 4e 43 54 20 2b 20 2b 20 31 36 20 2b 20 74  TINCT + + 16 + t
2a6c0 61 62 30 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61  ab0.col0 FROM ta
2a6d0 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30  b0 GROUP BY tab0
2a6e0 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 34 32 0d  .col0..----..42.
2a6f0 0a 35 39 0d 0a 39 39 0d 0a 0d 0a 71 75 65 72 79  .59..99....query
2a700 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
2a710 43 54 20 41 4c 4c 20 2b 20 2d 20 28 20 37 30 20  CT ALL + - ( 70 
2a720 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
2a730 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab2 GROUP BY tab
2a740 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37  2.col0..----..-7
2a750 30 0d 0a 2d 37 30 0d 0a 2d 37 30 0d 0a 0d 0a 71  0..-70..-70....q
2a760 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2a770 53 45 4c 45 43 54 20 2d 20 38 37 20 46 52 4f 4d  SELECT - 87 FROM
2a780 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74   tab1 GROUP BY t
2a790 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  ab1.col2..----..
2a7a0 2d 38 37 0d 0a 2d 38 37 0d 0a 2d 38 37 0d 0a 0d  -87..-87..-87...
2a7b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2a7c0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 33  ..SELECT ALL + 3
2a7d0 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  2 AS col0 FROM t
2a7e0 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
2a7f0 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a  P BY cor0.col2..
2a800 2d 2d 2d 2d 0d 0a 33 32 0d 0a 33 32 0d 0a 33 32  ----..32..32..32
2a810 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2a820 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
2a830 2d 20 38 31 20 41 53 20 63 6f 6c 31 20 46 52 4f  - 81 AS col1 FRO
2a840 4d 20 74 61 62 32 20 63 6f 72 30 20 47 52 4f 55  M tab2 cor0 GROU
2a850 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20  P BY cor0.col0, 
2a860 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor0.col0..----.
2a870 0a 2d 38 31 0d 0a 2d 38 31 0d 0a 2d 38 31 0d 0a  .-81..-81..-81..
2a880 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2a890 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 32 35  t..SELECT ALL 25
2a8a0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
2a8b0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31  r0 GROUP BY col1
2a8c0 0d 0a 2d 2d 2d 2d 0d 0a 32 35 0d 0a 32 35 0d 0a  ..----..25..25..
2a8d0 32 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  25....query I ro
2a8e0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
2a8f0 32 34 20 2b 20 2b 20 37 30 20 41 53 20 63 6f 6c  24 + + 70 AS col
2a900 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
2a910 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
2a920 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c  0.col0, cor0.col
2a930 32 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 34 36 0d  2..----..46..46.
2a940 0a 34 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .46....query I r
2a950 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 34  owsort..SELECT 4
2a960 35 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  5 AS col1 FROM t
2a970 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
2a980 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 34 35  1.col2..----..45
2a990 0d 0a 34 35 0d 0a 34 35 0d 0a 0d 0a 6f 6e 6c 79  ..45..45....only
2a9a0 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
2a9b0 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
2a9c0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
2a9d0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 33 35  owsort label-135
2a9e0 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  9..SELECT DISTIN
2a9f0 43 54 20 2b 20 2b 20 43 41 53 54 28 20 4e 55 4c  CT + + CAST( NUL
2aa00 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53  L AS SIGNED ) AS
2aa10 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
2aa20 47 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d  GROUP BY col2..-
2aa30 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ---..NULL....ski
2aa40 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2aa50 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
2aa60 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2aa70 6c 2d 31 33 35 39 0d 0a 53 45 4c 45 43 54 20 44  l-1359..SELECT D
2aa80 49 53 54 49 4e 43 54 20 2b 20 2b 20 43 41 53 54  ISTINCT + + CAST
2aa90 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
2aaa0 45 52 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  ER ) AS col2 FRO
2aab0 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
2aac0 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  col2..----..NULL
2aad0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2aae0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
2aaf0 2b 20 74 61 62 32 2e 63 6f 6c 31 20 2a 20 2b 20  + tab2.col1 * + 
2ab00 74 61 62 32 2e 63 6f 6c 31 20 41 53 20 63 6f 6c  tab2.col1 AS col
2ab10 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  0 FROM tab2 GROU
2ab20 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a  P BY tab2.col1..
2ab30 2d 2d 2d 2d 0d 0a 31 36 38 31 0d 0a 33 34 38 31  ----..1681..3481
2ab40 0d 0a 33 37 32 31 0d 0a 0d 0a 71 75 65 72 79 20  ..3721....query 
2ab50 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2ab60 54 20 41 4c 4c 20 2b 20 63 6f 72 30 2e 63 6f 6c  T ALL + cor0.col
2ab70 30 20 2b 20 2d 20 63 6f 72 30 2e 63 6f 6c 30 20  0 + - cor0.col0 
2ab80 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
2ab90 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  2 AS cor0 GROUP 
2aba0 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f  BY cor0.col0, co
2abb0 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 30  r0.col2..----..0
2abc0 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  ..0..0....query 
2abd0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2abe0 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 74  T DISTINCT + + t
2abf0 61 62 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 31  ab0.col2 AS col1
2ac00 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
2ac10 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d   BY tab0.col2..-
2ac20 2d 2d 2d 0d 0a 32 34 0d 0a 33 38 0d 0a 37 39 0d  ---..24..38..79.
2ac30 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
2ac40 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
2ac50 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
2ac60 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2ac70 62 65 6c 2d 31 33 36 33 0d 0a 53 45 4c 45 43 54  bel-1363..SELECT
2ac80 20 41 4c 4c 20 2b 20 63 6f 72 30 2e 63 6f 6c 31   ALL + cor0.col1
2ac90 20 44 49 56 20 63 6f 72 30 2e 63 6f 6c 31 20 2b   DIV cor0.col1 +
2aca0 20 2d 20 32 30 20 41 53 20 63 6f 6c 32 20 46 52   - 20 AS col2 FR
2acb0 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 47 52 4f  OM tab2 cor0 GRO
2acc0 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 2c  UP BY cor0.col2,
2acd0 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   cor0.col1..----
2ace0 0d 0a 2d 31 39 0d 0a 2d 31 39 0d 0a 2d 31 39 0d  ..-19..-19..-19.
2acf0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
2ad00 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
2ad10 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2ad20 74 20 6c 61 62 65 6c 2d 31 33 36 33 0d 0a 53 45  t label-1363..SE
2ad30 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 72 30 2e  LECT ALL + cor0.
2ad40 63 6f 6c 31 20 2f 20 63 6f 72 30 2e 63 6f 6c 31  col1 / cor0.col1
2ad50 20 2b 20 2d 20 32 30 20 41 53 20 63 6f 6c 32 20   + - 20 AS col2 
2ad60 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 47  FROM tab2 cor0 G
2ad70 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
2ad80 32 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d  2, cor0.col1..--
2ad90 2d 2d 0d 0a 2d 31 39 0d 0a 2d 31 39 0d 0a 2d 31  --..-19..-19..-1
2ada0 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  9....skipif post
2adb0 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
2adc0 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
2add0 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
2ade0 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
2adf0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2ae00 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30  ELECT ALL + col0
2ae10 20 2a 20 2d 20 63 6f 6c 30 20 63 6f 6c 32 20 46   * - col0 col2 F
2ae20 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
2ae30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
2ae40 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  ol1, cor0.col0..
2ae50 2d 2d 2d 2d 0d 0a 2d 31 38 34 39 0d 0a 2d 36 37  ----..-1849..-67
2ae60 36 0d 0a 2d 36 38 38 39 0d 0a 0d 0a 71 75 65 72  6..-6889....quer
2ae70 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2ae80 45 43 54 20 41 4c 4c 20 2b 20 37 36 20 46 52 4f  ECT ALL + 76 FRO
2ae90 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47  M tab0 AS cor0 G
2aea0 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
2aeb0 32 0d 0a 2d 2d 2d 2d 0d 0a 37 36 0d 0a 37 36 0d  2..----..76..76.
2aec0 0a 37 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .76....query I r
2aed0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
2aee0 49 53 54 49 4e 43 54 20 2b 20 2b 20 74 61 62 30  ISTINCT + + tab0
2aef0 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52  .col1 AS col0 FR
2af00 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59  OM tab0 GROUP BY
2af10 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   tab0.col1..----
2af20 0d 0a 30 0d 0a 38 31 0d 0a 0d 0a 71 75 65 72 79  ..0..81....query
2af30 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
2af40 43 54 20 44 49 53 54 49 4e 43 54 20 39 35 20 2b  CT DISTINCT 95 +
2af50 20 63 6f 72 30 2e 63 6f 6c 31 20 41 53 20 63 6f   cor0.col1 AS co
2af60 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  l2 FROM tab2 cor
2af70 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 2c  0 GROUP BY col1,
2af80 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   cor0.col2..----
2af90 0d 0a 31 33 36 0d 0a 31 35 34 0d 0a 31 35 36 0d  ..136..154..156.
2afa0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2afb0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
2afc0 4e 43 54 20 74 61 62 32 2e 63 6f 6c 30 20 2a 20  NCT tab2.col0 * 
2afd0 36 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  62 AS col1 FROM 
2afe0 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61  tab2 GROUP BY ta
2aff0 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 35  b2.col0..----..5
2b000 36 34 32 0d 0a 35 37 30 34 0d 0a 39 33 30 0d 0a  642..5704..930..
2b010 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2b020 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
2b030 43 54 20 2d 20 2d 20 38 30 20 41 53 20 63 6f 6c  CT - - 80 AS col
2b040 32 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  2 FROM tab1 GROU
2b050 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a  P BY tab1.col0..
2b060 2d 2d 2d 2d 0d 0a 38 30 0d 0a 0d 0a 73 6b 69 70  ----..80....skip
2b070 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
2b080 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
2b090 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
2b0a0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
2b0b0 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
2b0c0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
2b0d0 20 2d 20 2d 20 74 61 62 31 2e 63 6f 6c 31 20 63   - - tab1.col1 c
2b0e0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol2 FROM tab1 GR
2b0f0 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31  OUP BY tab1.col1
2b100 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d 0a 35 37 0d 0a  ..----..44..57..
2b110 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
2b120 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
2b130 54 49 4e 43 54 20 2b 20 2d 20 37 36 20 2b 20 2d  TINCT + - 76 + -
2b140 20 74 61 62 31 2e 63 6f 6c 30 20 41 53 20 63 6f   tab1.col0 AS co
2b150 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f  l0 FROM tab1 GRO
2b160 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 30 0d  UP BY tab1.col0.
2b170 0a 2d 2d 2d 2d 0d 0a 2d 31 30 34 0d 0a 2d 31 35  .----..-104..-15
2b180 38 0d 0a 2d 39 38 0d 0a 0d 0a 6f 6e 6c 79 69 66  8..-98....onlyif
2b190 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
2b1a0 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
2b1b0 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
2b1c0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 33 37 32 0d  sort label-1372.
2b1d0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 33 36  .SELECT ALL - 36
2b1e0 20 44 49 56 20 2b 20 63 6f 72 30 2e 63 6f 6c 31   DIV + cor0.col1
2b1f0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
2b200 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b2 AS cor0 GROUP
2b210 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d   BY cor0.col1..-
2b220 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a  ---..0..0..0....
2b230 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2b240 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
2b250 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2b260 61 62 65 6c 2d 31 33 37 32 0d 0a 53 45 4c 45 43  abel-1372..SELEC
2b270 54 20 41 4c 4c 20 2d 20 33 36 20 2f 20 2b 20 63  T ALL - 36 / + c
2b280 6f 72 30 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 30  or0.col1 AS col0
2b290 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
2b2a0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
2b2b0 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a  .col1..----..0..
2b2c0 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  0..0....query I 
2b2d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2b2e0 41 4c 4c 20 2b 20 35 32 20 41 53 20 63 6f 6c 32  ALL + 52 AS col2
2b2f0 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
2b300 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d   BY tab0.col2..-
2b310 2d 2d 2d 0d 0a 35 32 0d 0a 35 32 0d 0a 35 32 0d  ---..52..52..52.
2b320 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
2b330 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
2b340 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
2b350 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2b360 62 65 6c 2d 31 33 37 34 0d 0a 53 45 4c 45 43 54  bel-1374..SELECT
2b370 20 2d 20 35 34 20 44 49 56 20 74 61 62 31 2e 63   - 54 DIV tab1.c
2b380 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol2 FROM tab1 GR
2b390 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32  OUP BY tab1.col2
2b3a0 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 36 0d 0a  ..----..-1..-6..
2b3b0 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
2b3c0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2b3d0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2b3e0 6f 72 74 20 6c 61 62 65 6c 2d 31 33 37 34 0d 0a  ort label-1374..
2b3f0 53 45 4c 45 43 54 20 2d 20 35 34 20 2f 20 74 61  SELECT - 54 / ta
2b400 62 31 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  b1.col2 FROM tab
2b410 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
2b420 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a  col2..----..-1..
2b430 2d 36 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49  -6..0....query I
2b440 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2b450 20 44 49 53 54 49 4e 43 54 20 33 34 20 41 53 20   DISTINCT 34 AS 
2b460 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41  col1 FROM tab1 A
2b470 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
2b480 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor0.col0..----.
2b490 0a 33 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  .34....skipif po
2b4a0 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
2b4b0 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
2b4c0 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
2b4d0 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
2b4e0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2b4f0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 37 34 20 63  .SELECT ALL 74 c
2b500 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
2b510 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
2b520 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  or0.col0..----..
2b530 37 34 0d 0a 37 34 0d 0a 37 34 0d 0a 0d 0a 71 75  74..74..74....qu
2b540 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2b550 45 4c 45 43 54 20 41 4c 4c 20 2b 20 36 30 20 41  ELECT ALL + 60 A
2b560 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
2b570 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
2b580 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y cor0.col2..---
2b590 2d 0d 0a 36 30 0d 0a 36 30 0d 0a 36 30 0d 0a 0d  -..60..60..60...
2b5a0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2b5b0 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 28 20 39  ..SELECT + + ( 9
2b5c0 35 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  5 ) AS col2 FROM
2b5d0 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
2b5e0 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  ab0.col2..----..
2b5f0 39 35 0d 0a 39 35 0d 0a 39 35 0d 0a 0d 0a 71 75  95..95..95....qu
2b600 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2b610 45 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c 31 20  ELECT cor0.col1 
2b620 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
2b630 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  0 AS cor0 GROUP 
2b640 42 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f  BY cor0.col1, co
2b650 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f  r0.col1, cor0.co
2b660 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 38 31 0d  l1..----..0..81.
2b670 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
2b680 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
2b690 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
2b6a0 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
2b6b0 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
2b6c0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2b6d0 45 43 54 20 41 4c 4c 20 37 31 20 63 6f 6c 30 20  ECT ALL 71 col0 
2b6e0 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
2b6f0 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d  BY tab2.col0..--
2b700 2d 2d 0d 0a 37 31 0d 0a 37 31 0d 0a 37 31 0d 0a  --..71..71..71..
2b710 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2b720 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
2b730 2d 20 35 34 20 41 53 20 63 6f 6c 31 20 46 52 4f  - 54 AS col1 FRO
2b740 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
2b750 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab2.col0..----.
2b760 0a 2d 35 34 0d 0a 2d 35 34 0d 0a 2d 35 34 0d 0a  .-54..-54..-54..
2b770 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2b780 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 32 31  t..SELECT - + 21
2b790 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
2b7a0 20 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d   BY tab0.col0..-
2b7b0 2d 2d 2d 0d 0a 2d 32 31 0d 0a 2d 32 31 0d 0a 2d  ---..-21..-21..-
2b7c0 32 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  21....query I ro
2b7d0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
2b7e0 28 20 74 61 62 30 2e 63 6f 6c 31 20 29 20 46 52  ( tab0.col1 ) FR
2b7f0 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59  OM tab0 GROUP BY
2b800 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   col1..----..0..
2b810 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  81....query I ro
2b820 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 74 61  wsort..SELECT ta
2b830 62 32 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20  b2.col1 AS col2 
2b840 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
2b850 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34  BY col1..----..4
2b860 31 0d 0a 35 39 0d 0a 36 31 0d 0a 0d 0a 6f 6e 6c  1..59..61....onl
2b870 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
2b880 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
2b890 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
2b8a0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 33  rowsort label-13
2b8b0 38 35 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  85..SELECT DISTI
2b8c0 4e 43 54 20 35 37 20 44 49 56 20 37 38 20 41 53  NCT 57 DIV 78 AS
2b8d0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
2b8e0 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
2b8f0 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f  r0.col0, cor0.co
2b900 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73  l2..----..0....s
2b910 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2b920 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2b930 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2b940 62 65 6c 2d 31 33 38 35 0d 0a 53 45 4c 45 43 54  bel-1385..SELECT
2b950 20 44 49 53 54 49 4e 43 54 20 35 37 20 2f 20 37   DISTINCT 57 / 7
2b960 38 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  8 AS col2 FROM t
2b970 61 62 32 20 63 6f 72 30 20 47 52 4f 55 50 20 42  ab2 cor0 GROUP B
2b980 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72  Y cor0.col0, cor
2b990 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  0.col2..----..0.
2b9a0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2b9b0 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63  rt..SELECT ALL c
2b9c0 6f 72 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61  or0.col2 FROM ta
2b9d0 62 31 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  b1 cor0 GROUP BY
2b9e0 20 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 72 30   cor0.col2, cor0
2b9f0 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 35 0d  .col1..----..45.
2ba00 0a 37 31 0d 0a 38 0d 0a 0d 0a 71 75 65 72 79 20  .71..8....query 
2ba10 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2ba20 54 20 41 4c 4c 20 2d 20 38 32 20 2a 20 38 34 20  T ALL - 82 * 84 
2ba30 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
2ba40 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
2ba50 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 38 38  col1..----..-688
2ba60 38 0d 0a 2d 36 38 38 38 0d 0a 0d 0a 71 75 65 72  8..-6888....quer
2ba70 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2ba80 45 43 54 20 41 4c 4c 20 38 31 20 2a 20 2b 20 28  ECT ALL 81 * + (
2ba90 20 2d 20 74 61 62 30 2e 63 6f 6c 31 20 29 20 41   - tab0.col1 ) A
2baa0 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
2bab0 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
2bac0 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 35 36 31  ol1..----..-6561
2bad0 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..0....query I r
2bae0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 34  owsort..SELECT 4
2baf0 35 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  5 FROM tab0 AS c
2bb00 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
2bb10 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 34 35  0.col0..----..45
2bb20 0d 0a 34 35 0d 0a 34 35 0d 0a 0d 0a 71 75 65 72  ..45..45....quer
2bb30 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2bb40 45 43 54 20 41 4c 4c 20 2d 20 36 20 2a 20 2b 20  ECT ALL - 6 * + 
2bb50 63 6f 72 30 2e 63 6f 6c 30 20 41 53 20 63 6f 6c  cor0.col0 AS col
2bb60 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
2bb70 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
2bb80 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35  0.col0..----..-5
2bb90 34 36 0d 0a 2d 35 35 32 0d 0a 2d 39 30 0d 0a 0d  46..-552..-90...
2bba0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2bbb0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 72  ..SELECT ALL cor
2bbc0 30 2e 63 6f 6c 32 20 2a 20 63 6f 72 30 2e 63 6f  0.col2 * cor0.co
2bbd0 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l2 AS col0 FROM 
2bbe0 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f  tab1 AS cor0 GRO
2bbf0 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d  UP BY cor0.col2.
2bc00 0a 2d 2d 2d 2d 0d 0a 32 30 32 35 0d 0a 35 30 34  .----..2025..504
2bc10 31 0d 0a 36 34 0d 0a 0d 0a 71 75 65 72 79 20 49  1..64....query I
2bc20 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2bc30 20 41 4c 4c 20 2b 20 74 61 62 32 2e 63 6f 6c 30   ALL + tab2.col0
2bc40 20 2b 20 2d 20 74 61 62 32 2e 63 6f 6c 30 20 41   + - tab2.col0 A
2bc50 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
2bc60 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63   GROUP BY tab2.c
2bc70 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d  ol0..----..0..0.
2bc80 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  .0....query I ro
2bc90 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
2bca0 28 20 32 30 20 29 20 2d 20 2b 20 63 6f 72 30 2e  ( 20 ) - + cor0.
2bcb0 63 6f 6c 32 20 2a 20 36 31 20 46 52 4f 4d 20 74  col2 * 61 FROM t
2bcc0 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
2bcd0 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a  P BY cor0.col2..
2bce0 2d 2d 2d 2d 0d 0a 2d 33 35 31 38 0d 0a 2d 34 37  ----..-3518..-47
2bcf0 39 39 0d 0a 2d 35 32 38 37 0d 0a 0d 0a 71 75 65  99..-5287....que
2bd00 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2bd10 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
2bd20 28 20 2b 20 32 34 20 29 20 41 53 20 63 6f 6c 32  ( + 24 ) AS col2
2bd30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
2bd40 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
2bd50 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34  .col1..----..-24
2bd60 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2bd70 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
2bd80 49 4e 43 54 20 37 31 20 41 53 20 63 6f 6c 32 20  INCT 71 AS col2 
2bd90 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
2bda0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
2bdb0 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 37 31 0d 0a  col1..----..71..
2bdc0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2bdd0 74 0d 0a 53 45 4c 45 43 54 20 2b 20 38 35 20 2b  t..SELECT + 85 +
2bde0 20 2d 20 74 61 62 32 2e 63 6f 6c 32 20 46 52 4f   - tab2.col2 FRO
2bdf0 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
2be00 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 0d 0a  col2..----..-2..
2be10 32 37 0d 0a 36 0d 0a 0d 0a 71 75 65 72 79 20 49  27..6....query I
2be20 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2be30 20 2d 20 74 61 62 31 2e 63 6f 6c 30 20 2d 20 2d   - tab1.col0 - -
2be40 20 32 39 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   29 AS col1 FROM
2be50 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74   tab1 GROUP BY t
2be60 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab1.col0..----..
2be70 2d 35 33 0d 0a 31 0d 0a 37 0d 0a 0d 0a 71 75 65  -53..1..7....que
2be80 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2be90 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
2bea0 63 6f 72 30 2e 63 6f 6c 31 20 41 53 20 63 6f 6c  cor0.col1 AS col
2beb0 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  0 FROM tab1 AS c
2bec0 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
2bed0 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c  0.col1, cor0.col
2bee0 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 34 0d 0a 2d 35  1..----..-44..-5
2bef0 37 0d 0a 2d 36 0d 0a 0d 0a 71 75 65 72 79 20 49  7..-6....query I
2bf00 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2bf10 20 44 49 53 54 49 4e 43 54 20 63 6f 72 30 2e 63   DISTINCT cor0.c
2bf20 6f 6c 31 20 2b 20 35 35 20 2a 20 2d 20 38 20 46  ol1 + 55 * - 8 F
2bf30 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
2bf40 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
2bf50 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  ol1, cor0.col0..
2bf60 2d 2d 2d 2d 0d 0a 2d 33 37 39 0d 0a 2d 33 38 31  ----..-379..-381
2bf70 0d 0a 2d 33 39 39 0d 0a 0d 0a 71 75 65 72 79 20  ..-399....query 
2bf80 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2bf90 54 20 2d 20 35 36 20 2a 20 63 6f 72 30 2e 63 6f  T - 56 * cor0.co
2bfa0 6c 32 20 2b 20 2d 20 63 6f 72 30 2e 63 6f 6c 32  l2 + - cor0.col2
2bfb0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
2bfc0 62 32 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  b2 cor0 GROUP BY
2bfd0 20 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 31   col2, cor0.col1
2bfe0 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 33 30 36 0d 0a 2d  ..----..-3306..-
2bff0 34 35 30 33 0d 0a 2d 34 39 35 39 0d 0a 0d 0a 71  4503..-4959....q
2c000 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2c010 53 45 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c 31  SELECT cor0.col1
2c020 20 2a 20 34 32 20 46 52 4f 4d 20 74 61 62 31 20   * 42 FROM tab1 
2c030 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
2c040 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   cor0.col1..----
2c050 0d 0a 31 38 34 38 0d 0a 32 33 39 34 0d 0a 32 35  ..1848..2394..25
2c060 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
2c070 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 74 61 62  sort..SELECT tab
2c080 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46  0.col2 AS col1 F
2c090 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42  ROM tab0 GROUP B
2c0a0 59 20 63 6f 6c 32 20 48 41 56 49 4e 47 20 4e 4f  Y col2 HAVING NO
2c0b0 54 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a  T NULL IS NULL..
2c0c0 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
2c0d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2c0e0 41 4c 4c 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 72  ALL col1 * - cor
2c0f0 30 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  0.col1 FROM tab0
2c100 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
2c110 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y cor0.col1..---
2c120 2d 0d 0a 2d 36 35 36 31 0d 0a 30 0d 0a 0d 0a 71  -..-6561..0....q
2c130 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2c140 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2c150 2d 20 74 61 62 32 2e 63 6f 6c 31 20 2d 20 2d 20  - tab2.col1 - - 
2c160 74 61 62 32 2e 63 6f 6c 31 20 41 53 20 63 6f 6c  tab2.col1 AS col
2c170 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  0 FROM tab2 GROU
2c180 50 20 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  P BY col1..----.
2c190 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  .0....query I ro
2c1a0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
2c1b0 4c 20 74 61 62 32 2e 63 6f 6c 32 20 2b 20 74 61  L tab2.col2 + ta
2c1c0 62 32 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  b2.col2 FROM tab
2c1d0 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
2c1e0 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 31 36 0d  col2..----..116.
2c1f0 0a 31 35 38 0d 0a 31 37 34 0d 0a 0d 0a 71 75 65  .158..174....que
2c200 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2c210 4c 45 43 54 20 41 4c 4c 20 2b 20 2b 20 63 6f 6c  LECT ALL + + col
2c220 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  0 AS col1 FROM t
2c230 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab0 GROUP BY tab
2c240 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 36  0.col0..----..26
2c250 0d 0a 34 33 0d 0a 38 33 0d 0a 0d 0a 71 75 65 72  ..43..83....quer
2c260 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2c270 45 43 54 20 41 4c 4c 20 2d 20 2d 20 39 37 20 2a  ECT ALL - - 97 *
2c280 20 2b 20 74 61 62 31 2e 63 6f 6c 30 20 46 52 4f   + tab1.col0 FRO
2c290 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
2c2a0 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab1.col0..----.
2c2b0 0a 32 31 33 34 0d 0a 32 37 31 36 0d 0a 37 39 35  .2134..2716..795
2c2c0 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  4....query I row
2c2d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 35 30 20  sort..SELECT 50 
2c2e0 2b 20 74 61 62 31 2e 63 6f 6c 30 20 46 52 4f 4d  + tab1.col0 FROM
2c2f0 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74   tab1 GROUP BY t
2c300 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab1.col0..----..
2c310 31 33 32 0d 0a 37 32 0d 0a 37 38 0d 0a 0d 0a 71  132..72..78....q
2c320 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2c330 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2c340 2d 20 2d 20 74 61 62 30 2e 63 6f 6c 31 20 41 53  - - tab0.col1 AS
2c350 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
2c360 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a 2d  GROUP BY col1..-
2c370 2d 2d 2d 0d 0a 30 0d 0a 38 31 0d 0a 0d 0a 71 75  ---..0..81....qu
2c380 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2c390 45 4c 45 43 54 20 2b 20 74 61 62 32 2e 63 6f 6c  ELECT + tab2.col
2c3a0 31 20 2a 20 2b 20 32 30 20 41 53 20 63 6f 6c 30  1 * + 20 AS col0
2c3b0 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
2c3c0 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d   BY tab2.col1..-
2c3d0 2d 2d 2d 0d 0a 31 31 38 30 0d 0a 31 32 32 30 0d  ---..1180..1220.
2c3e0 0a 38 32 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  .820....skipif p
2c3f0 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
2c400 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
2c410 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
2c420 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
2c430 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2c440 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 72 30 2e  ..SELECT - cor0.
2c450 63 6f 6c 30 20 2d 20 2d 20 39 33 20 63 6f 6c 30  col0 - - 93 col0
2c460 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
2c470 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
2c480 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a  .col0..----..1..
2c490 32 0d 0a 37 38 0d 0a 0d 0a 71 75 65 72 79 20 49  2..78....query I
2c4a0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2c4b0 20 44 49 53 54 49 4e 43 54 20 63 6f 72 30 2e 63   DISTINCT cor0.c
2c4c0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
2c4d0 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e   cor0 CROSS JOIN
2c4e0 20 74 61 62 30 20 41 53 20 63 6f 72 31 20 47 52   tab0 AS cor1 GR
2c4f0 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30  OUP BY cor0.col0
2c500 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 39 31 0d 0a  ..----..15..91..
2c510 39 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  92....query I ro
2c520 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
2c530 4c 20 36 37 20 46 52 4f 4d 20 74 61 62 32 20 41  L 67 FROM tab2 A
2c540 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
2c550 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 6c 31 0d  cor0.col2, col1.
2c560 0a 2d 2d 2d 2d 0d 0a 36 37 0d 0a 36 37 0d 0a 36  .----..67..67..6
2c570 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  7....skipif post
2c580 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
2c590 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
2c5a0 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
2c5b0 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
2c5c0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2c5d0 45 4c 45 43 54 20 32 32 20 2a 20 2d 20 63 6f 72  ELECT 22 * - cor
2c5e0 30 2e 63 6f 6c 32 20 63 6f 6c 32 20 46 52 4f 4d  0.col2 col2 FROM
2c5f0 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52   tab0 AS cor0 GR
2c600 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32  OUP BY cor0.col2
2c610 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  , cor0.col2..---
2c620 2d 0d 0a 2d 31 37 33 38 0d 0a 2d 35 32 38 0d 0a  -..-1738..-528..
2c630 2d 38 33 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  -836....skipif p
2c640 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
2c650 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
2c660 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
2c670 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
2c680 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2c690 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 34 37 20  ..SELECT - + 47 
2c6a0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 47  col1 FROM tab1 G
2c6b0 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
2c6c0 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 37 0d 0a 2d 34  2..----..-47..-4
2c6d0 37 0d 0a 2d 34 37 0d 0a 0d 0a 71 75 65 72 79 20  7..-47....query 
2c6e0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2c6f0 54 20 2d 20 39 20 41 53 20 63 6f 6c 32 20 46 52  T - 9 AS col2 FR
2c700 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
2c710 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
2c720 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d  l1, cor0.col0..-
2c730 2d 2d 2d 0d 0a 2d 39 0d 0a 2d 39 0d 0a 2d 39 0d  ---..-9..-9..-9.
2c740 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2c750 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
2c760 4e 43 54 20 2d 20 63 6f 72 30 2e 63 6f 6c 31 20  NCT - cor0.col1 
2c770 2a 20 2d 20 39 37 20 41 53 20 63 6f 6c 31 20 46  * - 97 AS col1 F
2c780 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
2c790 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a   GROUP BY col1..
2c7a0 2d 2d 2d 2d 0d 0a 33 39 37 37 0d 0a 35 37 32 33  ----..3977..5723
2c7b0 0d 0a 35 39 31 37 0d 0a 0d 0a 71 75 65 72 79 20  ..5917....query 
2c7c0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2c7d0 54 20 33 32 20 46 52 4f 4d 20 74 61 62 32 20 47  T 32 FROM tab2 G
2c7e0 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
2c7f0 31 0d 0a 2d 2d 2d 2d 0d 0a 33 32 0d 0a 33 32 0d  1..----..32..32.
2c800 0a 33 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .32....query I r
2c810 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
2c820 49 53 54 49 4e 43 54 20 2b 20 36 39 20 46 52 4f  ISTINCT + 69 FRO
2c830 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
2c840 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab1.col1..----.
2c850 0a 36 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .69....query I r
2c860 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
2c870 20 74 61 62 32 2e 63 6f 6c 32 20 2b 20 2d 20 39   tab2.col2 + - 9
2c880 34 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  4 FROM tab2 GROU
2c890 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a  P BY tab2.col2..
2c8a0 2d 2d 2d 2d 0d 0a 2d 31 35 32 0d 0a 2d 31 37 33  ----..-152..-173
2c8b0 0d 0a 2d 31 38 31 0d 0a 0d 0a 71 75 65 72 79 20  ..-181....query 
2c8c0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2c8d0 54 20 44 49 53 54 49 4e 43 54 20 2d 20 33 35 20  T DISTINCT - 35 
2c8e0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
2c8f0 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
2c900 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 35 0d  col1..----..-35.
2c910 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2c920 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 74 61 62  rt..SELECT + tab
2c930 30 2e 63 6f 6c 30 20 2d 20 39 35 20 46 52 4f 4d  0.col0 - 95 FROM
2c940 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
2c950 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0.col0..----..
2c960 2d 31 32 0d 0a 2d 35 32 0d 0a 2d 36 39 0d 0a 0d  -12..-52..-69...
2c970 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
2c980 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
2c990 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
2c9a0 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
2c9b0 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
2c9c0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2c9d0 54 20 2b 20 63 6f 72 30 2e 63 6f 6c 32 20 2b 20  T + cor0.col2 + 
2c9e0 63 6f 72 30 2e 63 6f 6c 32 20 63 6f 6c 31 20 46  cor0.col2 col1 F
2c9f0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
2ca00 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
2ca10 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 31 36 0d 0a  ol2..----..116..
2ca20 31 35 38 0d 0a 31 37 34 0d 0a 0d 0a 71 75 65 72  158..174....quer
2ca30 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2ca40 45 43 54 20 35 33 20 41 53 20 63 6f 6c 31 20 46  ECT 53 AS col1 F
2ca50 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20 47 52  ROM tab0 cor0 GR
2ca60 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32  OUP BY cor0.col2
2ca70 0d 0a 2d 2d 2d 2d 0d 0a 35 33 0d 0a 35 33 0d 0a  ..----..53..53..
2ca80 35 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  53....query I ro
2ca90 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
2caa0 4c 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 2a 20  L + cor0.col1 * 
2cab0 36 38 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  68 FROM tab0 AS 
2cac0 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
2cad0 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30  r0.col1..----..0
2cae0 0d 0a 35 35 30 38 0d 0a 0d 0a 71 75 65 72 79 20  ..5508....query 
2caf0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2cb00 54 20 74 61 62 31 2e 63 6f 6c 32 20 41 53 20 63  T tab1.col2 AS c
2cb10 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol2 FROM tab1 GR
2cb20 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32  OUP BY tab1.col2
2cb30 20 48 41 56 49 4e 47 20 4e 4f 54 20 4e 55 4c 4c   HAVING NOT NULL
2cb40 20 3c 3e 20 28 20 4e 55 4c 4c 20 29 0d 0a 2d 2d   <> ( NULL )..--
2cb50 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
2cb60 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
2cb70 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 46 52  STINCT + col0 FR
2cb80 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
2cb90 20 74 61 62 32 2e 63 6f 6c 30 20 48 41 56 49 4e   tab2.col0 HAVIN
2cba0 47 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 55  G NOT NULL IS NU
2cbb0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
2cbc0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2cbd0 45 43 54 20 41 4c 4c 20 63 6f 72 31 2e 63 6f 6c  ECT ALL cor1.col
2cbe0 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  1 AS col2 FROM t
2cbf0 61 62 32 20 63 6f 72 30 20 43 52 4f 53 53 20 4a  ab2 cor0 CROSS J
2cc00 4f 49 4e 20 74 61 62 30 20 41 53 20 63 6f 72 31  OIN tab0 AS cor1
2cc10 20 47 52 4f 55 50 20 42 59 20 63 6f 72 31 2e 63   GROUP BY cor1.c
2cc20 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 38 31  ol1..----..0..81
2cc30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2cc40 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
2cc50 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
2cc60 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2cc70 61 62 65 6c 2d 31 34 32 39 0d 0a 53 45 4c 45 43  abel-1429..SELEC
2cc80 54 20 44 49 53 54 49 4e 43 54 20 2d 20 74 61 62  T DISTINCT - tab
2cc90 30 2e 63 6f 6c 30 20 44 49 56 20 2d 20 74 61 62  0.col0 DIV - tab
2cca0 30 2e 63 6f 6c 30 20 63 6f 6c 30 20 46 52 4f 4d  0.col0 col0 FROM
2ccb0 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
2ccc0 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0.col0..----..
2ccd0 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  1....skipif mysq
2cce0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2ccf0 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  le..skipif postg
2cd00 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
2cd10 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
2cd20 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
2cd30 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
2cd40 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2cd50 65 6c 2d 31 34 32 39 0d 0a 53 45 4c 45 43 54 20  el-1429..SELECT 
2cd60 44 49 53 54 49 4e 43 54 20 2d 20 74 61 62 30 2e  DISTINCT - tab0.
2cd70 63 6f 6c 30 20 2f 20 2d 20 74 61 62 30 2e 63 6f  col0 / - tab0.co
2cd80 6c 30 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  l0 col0 FROM tab
2cd90 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
2cda0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d  col0..----..1...
2cdb0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
2cdc0 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
2cdd0 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
2cde0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2cdf0 6c 2d 31 34 33 30 0d 0a 53 45 4c 45 43 54 20 2d  l-1430..SELECT -
2ce00 20 63 6f 72 30 2e 63 6f 6c 30 20 44 49 56 20 28   cor0.col0 DIV (
2ce10 20 2d 20 35 34 20 29 20 63 6f 6c 31 20 46 52 4f   - 54 ) col1 FRO
2ce20 4d 20 74 61 62 30 20 63 6f 72 30 20 47 52 4f 55  M tab0 cor0 GROU
2ce30 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  P BY cor0.col0..
2ce40 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 31 0d 0a 0d  ----..0..0..1...
2ce50 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2ce60 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2ce70 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
2ce80 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
2ce90 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
2cea0 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
2ceb0 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
2cec0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
2ced0 34 33 30 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  430..SELECT - co
2cee0 72 30 2e 63 6f 6c 30 20 2f 20 28 20 2d 20 35 34  r0.col0 / ( - 54
2cef0 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   ) col1 FROM tab
2cf00 30 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  0 cor0 GROUP BY 
2cf10 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor0.col0..----.
2cf20 0a 30 0d 0a 30 0d 0a 31 0d 0a 0d 0a 6f 6e 6c 79  .0..0..1....only
2cf30 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
2cf40 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
2cf50 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
2cf60 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 34 33  owsort label-143
2cf70 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 74 61  1..SELECT ALL ta
2cf80 62 32 2e 63 6f 6c 30 20 44 49 56 20 2d 20 34 31  b2.col0 DIV - 41
2cf90 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
2cfa0 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d   BY tab2.col0..-
2cfb0 2d 2d 2d 0d 0a 2d 32 0d 0a 2d 32 0d 0a 30 0d 0a  ---..-2..-2..0..
2cfc0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2cfd0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2cfe0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2cff0 20 6c 61 62 65 6c 2d 31 34 33 31 0d 0a 53 45 4c   label-1431..SEL
2d000 45 43 54 20 41 4c 4c 20 74 61 62 32 2e 63 6f 6c  ECT ALL tab2.col
2d010 30 20 2f 20 2d 20 34 31 20 46 52 4f 4d 20 74 61  0 / - 41 FROM ta
2d020 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32  b2 GROUP BY tab2
2d030 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 0d  .col0..----..-2.
2d040 0a 2d 32 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  .-2..0....query 
2d050 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2d060 54 20 44 49 53 54 49 4e 43 54 20 28 20 31 39 20  T DISTINCT ( 19 
2d070 29 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30  ) FROM tab0 cor0
2d080 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 30 0d 0a   GROUP BY col0..
2d090 2d 2d 2d 2d 0d 0a 31 39 0d 0a 0d 0a 71 75 65 72  ----..19....quer
2d0a0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2d0b0 45 43 54 20 33 35 20 46 52 4f 4d 20 74 61 62 31  ECT 35 FROM tab1
2d0c0 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a   GROUP BY col1..
2d0d0 2d 2d 2d 2d 0d 0a 33 35 0d 0a 33 35 0d 0a 33 35  ----..35..35..35
2d0e0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2d0f0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20  ort..SELECT - + 
2d100 33 39 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f  39 FROM tab0 GRO
2d110 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d  UP BY col2..----
2d120 0d 0a 2d 33 39 0d 0a 2d 33 39 0d 0a 2d 33 39 0d  ..-39..-39..-39.
2d130 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2d140 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  rt..SELECT ALL +
2d150 20 2b 20 38 20 46 52 4f 4d 20 74 61 62 32 20 47   + 8 FROM tab2 G
2d160 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
2d170 31 0d 0a 2d 2d 2d 2d 0d 0a 38 0d 0a 38 0d 0a 38  1..----..8..8..8
2d180 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2d190 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20  ort..SELECT + - 
2d1a0 36 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  62 AS col1 FROM 
2d1b0 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
2d1c0 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  b1.col1..----..-
2d1d0 36 32 0d 0a 2d 36 32 0d 0a 2d 36 32 0d 0a 0d 0a  62..-62..-62....
2d1e0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2d1f0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 72 30  .SELECT ALL cor0
2d200 2e 63 6f 6c 30 20 2a 20 2b 20 63 6f 72 30 2e 63  .col0 * + cor0.c
2d210 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
2d220 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47 52   tab2 AS cor0 GR
2d230 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30  OUP BY cor0.col0
2d240 0d 0a 2d 2d 2d 2d 0d 0a 32 32 35 0d 0a 38 32 38  ..----..225..828
2d250 31 0d 0a 38 34 36 34 0d 0a 0d 0a 71 75 65 72 79  1..8464....query
2d260 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
2d270 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 31 37  CT DISTINCT + 17
2d280 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
2d290 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b1 AS cor0 GROUP
2d2a0 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d   BY cor0.col0..-
2d2b0 2d 2d 2d 0d 0a 31 37 0d 0a 0d 0a 71 75 65 72 79  ---..17....query
2d2c0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
2d2d0 43 54 20 41 4c 4c 20 2b 20 34 20 46 52 4f 4d 20  CT ALL + 4 FROM 
2d2e0 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
2d2f0 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 34  b1.col0..----..4
2d300 0d 0a 34 0d 0a 34 0d 0a 0d 0a 71 75 65 72 79 20  ..4..4....query 
2d310 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2d320 54 20 2d 20 31 31 20 46 52 4f 4d 20 74 61 62 30  T - 11 FROM tab0
2d330 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
2d340 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72  Y cor0.col0, cor
2d350 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  0.col1..----..-1
2d360 31 0d 0a 2d 31 31 0d 0a 2d 31 31 0d 0a 0d 0a 71  1..-11..-11....q
2d370 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2d380 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2d390 31 37 20 2d 20 2b 20 63 6f 6c 32 20 46 52 4f 4d  17 - + col2 FROM
2d3a0 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74   tab2 GROUP BY t
2d3b0 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  ab2.col2..----..
2d3c0 2d 34 31 0d 0a 2d 36 32 0d 0a 2d 37 30 0d 0a 0d  -41..-62..-70...
2d3d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2d3e0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 74 61 62  ..SELECT ALL tab
2d3f0 32 2e 63 6f 6c 31 20 2a 20 2d 20 35 34 20 46 52  2.col1 * - 54 FR
2d400 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
2d410 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32   col1..----..-22
2d420 31 34 0d 0a 2d 33 31 38 36 0d 0a 2d 33 32 39 34  14..-3186..-3294
2d430 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2d440 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
2d450 49 4e 43 54 20 2b 20 28 20 74 61 62 30 2e 63 6f  INCT + ( tab0.co
2d460 6c 31 20 29 20 2a 20 38 34 20 41 53 20 63 6f 6c  l1 ) * 84 AS col
2d470 31 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55  1 FROM tab0 GROU
2d480 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a  P BY tab0.col1..
2d490 2d 2d 2d 2d 0d 0a 30 0d 0a 36 38 30 34 0d 0a 0d  ----..0..6804...
2d4a0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2d4b0 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e 63 6f  ..SELECT cor0.co
2d4c0 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
2d4d0 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
2d4e0 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f  r0.col0, cor0.co
2d4f0 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d  l1, cor0.col2..-
2d500 2d 2d 2d 0d 0a 34 35 0d 0a 37 31 0d 0a 38 0d 0a  ---..45..71..8..
2d510 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2d520 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
2d530 74 61 62 32 2e 63 6f 6c 30 20 2b 20 74 61 62 32  tab2.col0 + tab2
2d540 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52  .col0 AS col1 FR
2d550 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
2d560 20 63 6f 6c 30 20 48 41 56 49 4e 47 20 4e 4f 54   col0 HAVING NOT
2d570 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c   NULL IS NOT NUL
2d580 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30  L..----..0..0..0
2d590 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2d5a0 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
2d5b0 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
2d5c0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2d5d0 61 62 65 6c 2d 31 34 34 36 0d 0a 53 45 4c 45 43  abel-1446..SELEC
2d5e0 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 41 53  T DISTINCT - CAS
2d5f0 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
2d600 44 20 29 20 46 52 4f 4d 20 74 61 62 30 20 47 52  D ) FROM tab0 GR
2d610 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 32  OUP BY tab0.col2
2d620 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
2d630 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2d640 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
2d650 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2d660 61 62 65 6c 2d 31 34 34 36 0d 0a 53 45 4c 45 43  abel-1446..SELEC
2d670 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 41 53  T DISTINCT - CAS
2d680 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
2d690 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 30 20  GER ) FROM tab0 
2d6a0 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f  GROUP BY tab0.co
2d6b0 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  l2..----..NULL..
2d6c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2d6d0 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 2b  t..SELECT col0 +
2d6e0 20 2d 20 74 61 62 30 2e 63 6f 6c 30 20 46 52 4f   - tab0.col0 FRO
2d6f0 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
2d700 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab0.col0..----.
2d710 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72  .0..0..0....quer
2d720 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2d730 45 43 54 20 44 49 53 54 49 4e 43 54 20 31 20 46  ECT DISTINCT 1 F
2d740 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
2d750 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab1.col2..---
2d760 2d 0d 0a 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -..1....query I 
2d770 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2d780 2d 20 39 36 20 46 52 4f 4d 20 74 61 62 31 20 47  - 96 FROM tab1 G
2d790 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a 2d 2d  ROUP BY col1..--
2d7a0 2d 2d 0d 0a 2d 39 36 0d 0a 2d 39 36 0d 0a 2d 39  --..-96..-96..-9
2d7b0 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
2d7c0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
2d7d0 20 33 36 20 2b 20 63 6f 72 30 2e 63 6f 6c 32 20   36 + cor0.col2 
2d7e0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
2d7f0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
2d800 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 30 37 0d  col2..----..107.
2d810 0a 34 34 0d 0a 38 31 0d 0a 0d 0a 71 75 65 72 79  .44..81....query
2d820 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
2d830 43 54 20 2d 20 39 32 20 2a 20 2b 20 63 6f 72 30  CT - 92 * + cor0
2d840 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20  .col2 FROM tab1 
2d850 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
2d860 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   cor0.col2..----
2d870 0d 0a 2d 34 31 34 30 0d 0a 2d 36 35 33 32 0d 0a  ..-4140..-6532..
2d880 2d 37 33 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -736....query I 
2d890 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2d8a0 2d 20 32 34 20 41 53 20 63 6f 6c 32 20 46 52 4f  - 24 AS col2 FRO
2d8b0 4d 20 74 61 62 30 20 63 6f 72 30 20 47 52 4f 55  M tab0 cor0 GROU
2d8c0 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  P BY cor0.col0..
2d8d0 2d 2d 2d 2d 0d 0a 2d 32 34 0d 0a 2d 32 34 0d 0a  ----..-24..-24..
2d8e0 2d 32 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -24....query I r
2d8f0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
2d900 4c 4c 20 63 6f 72 30 2e 63 6f 6c 32 20 41 53 20  LL cor0.col2 AS 
2d910 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
2d920 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
2d930 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 72 30 2e  cor0.col2, cor0.
2d940 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 35 38 0d 0a  col0..----..58..
2d950 37 39 0d 0a 38 37 0d 0a 0d 0a 71 75 65 72 79 20  79..87....query 
2d960 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2d970 54 20 44 49 53 54 49 4e 43 54 20 37 30 20 41 53  T DISTINCT 70 AS
2d980 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
2d990 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
2d9a0 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   cor0.col0..----
2d9b0 0d 0a 37 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..70....query I 
2d9c0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2d9d0 2b 20 31 30 20 2d 20 2b 20 38 37 20 41 53 20 63  + 10 - + 87 AS c
2d9e0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
2d9f0 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
2da00 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  or0.col0..----..
2da10 2d 37 37 0d 0a 2d 37 37 0d 0a 2d 37 37 0d 0a 0d  -77..-77..-77...
2da20 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2da30 0d 0a 53 45 4c 45 43 54 20 2d 20 74 61 62 31 2e  ..SELECT - tab1.
2da40 63 6f 6c 30 20 2a 20 31 36 20 41 53 20 63 6f 6c  col0 * 16 AS col
2da50 31 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  1 FROM tab1 GROU
2da60 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a  P BY tab1.col0..
2da70 2d 2d 2d 2d 0d 0a 2d 31 33 31 32 0d 0a 2d 33 35  ----..-1312..-35
2da80 32 0d 0a 2d 34 34 38 0d 0a 0d 0a 71 75 65 72 79  2..-448....query
2da90 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
2daa0 43 54 20 63 6f 6c 30 20 2a 20 2b 20 63 6f 72 30  CT col0 * + cor0
2dab0 2e 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20  .col1 FROM tab0 
2dac0 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
2dad0 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30   cor0.col1, cor0
2dae0 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a  .col0..----..0..
2daf0 30 0d 0a 33 34 38 33 0d 0a 0d 0a 73 6b 69 70 69  0..3483....skipi
2db00 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
2db10 6f 73 74 67 72 65 53 51 4c 20 68 61 73 20 73 74  ostgreSQL has st
2db20 72 69 63 74 20 63 6f 6c 75 6d 6e 20 75 73 61 67  rict column usag
2db30 65 20 66 6f 72 20 47 52 4f 55 50 20 42 59 20 63  e for GROUP BY c
2db40 6c 61 75 73 65 73 0d 0a 71 75 65 72 79 20 49 20  lauses..query I 
2db50 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2db60 63 6f 72 30 2e 63 6f 6c 31 20 2b 20 43 4f 41 4c  cor0.col1 + COAL
2db70 45 53 43 45 20 28 20 33 35 2c 20 63 6f 72 30 2e  ESCE ( 35, cor0.
2db80 63 6f 6c 30 20 2d 20 63 6f 72 30 2e 63 6f 6c 32  col0 - cor0.col2
2db90 2c 20 2b 20 63 6f 72 30 2e 63 6f 6c 30 20 2d 20  , + cor0.col0 - 
2dba0 2d 20 43 41 53 45 20 63 6f 72 30 2e 63 6f 6c 30  - CASE cor0.col0
2dbb0 20 2b 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 2f   + + cor0.col1 /
2dbc0 20 63 6f 72 30 2e 63 6f 6c 31 20 57 48 45 4e 20   cor0.col1 WHEN 
2dbd0 2b 20 63 6f 72 30 2e 63 6f 6c 32 20 2a 20 63 6f  + cor0.col2 * co
2dbe0 72 30 2e 63 6f 6c 32 20 54 48 45 4e 20 2b 20 63  r0.col2 THEN + c
2dbf0 6f 72 30 2e 63 6f 6c 30 20 2b 20 63 6f 72 30 2e  or0.col0 + cor0.
2dc00 63 6f 6c 32 20 57 48 45 4e 20 63 6f 72 30 2e 63  col2 WHEN cor0.c
2dc10 6f 6c 32 20 54 48 45 4e 20 4e 55 4c 4c 20 45 4e  ol2 THEN NULL EN
2dc20 44 2c 20 63 6f 72 30 2e 63 6f 6c 32 20 2a 20 63  D, cor0.col2 * c
2dc30 6f 72 30 2e 63 6f 6c 32 20 29 20 41 53 20 63 6f  or0.col2 ) AS co
2dc40 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l1 FROM tab1 AS 
2dc50 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
2dc60 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34  r0.col1..----..4
2dc70 31 0d 0a 37 39 0d 0a 39 32 0d 0a 0d 0a 71 75 65  1..79..92....que
2dc80 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2dc90 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
2dca0 35 34 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  54 AS col1 FROM 
2dcb0 74 61 62 31 20 63 6f 72 30 20 47 52 4f 55 50 20  tab1 cor0 GROUP 
2dcc0 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 35  BY col2..----..5
2dcd0 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  4....query I row
2dce0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
2dcf0 54 49 4e 43 54 20 2b 20 74 61 62 30 2e 63 6f 6c  TINCT + tab0.col
2dd00 30 20 2b 20 74 61 62 30 2e 63 6f 6c 30 20 2a 20  0 + tab0.col0 * 
2dd10 2d 20 74 61 62 30 2e 63 6f 6c 30 20 41 53 20 63  - tab0.col0 AS c
2dd20 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol0 FROM tab0 GR
2dd30 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 30  OUP BY tab0.col0
2dd40 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 30 36 0d 0a 2d  ..----..-1806..-
2dd50 36 35 30 0d 0a 2d 36 38 30 36 0d 0a 0d 0a 71 75  650..-6806....qu
2dd60 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2dd70 45 4c 45 43 54 20 2d 20 2b 20 39 30 20 2b 20 2b  ELECT - + 90 + +
2dd80 20 74 61 62 32 2e 63 6f 6c 32 20 41 53 20 63 6f   tab2.col2 AS co
2dd90 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f  l2 FROM tab2 GRO
2dda0 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d  UP BY tab2.col2.
2ddb0 0a 2d 2d 2d 2d 0d 0a 2d 31 31 0d 0a 2d 33 0d 0a  .----..-11..-3..
2ddc0 2d 33 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  -32....skipif po
2ddd0 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
2dde0 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
2ddf0 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
2de00 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
2de10 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2de20 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
2de30 20 35 34 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   54 col2 FROM ta
2de40 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b1 AS cor0 GROUP
2de50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d   BY cor0.col0..-
2de60 2d 2d 2d 0d 0a 35 34 0d 0a 0d 0a 6f 6e 6c 79 69  ---..54....onlyi
2de70 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
2de80 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
2de90 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
2dea0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 34 36 33  wsort label-1463
2deb0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 74 61 62  ..SELECT ALL tab
2dec0 30 2e 63 6f 6c 32 20 44 49 56 20 2d 20 74 61 62  0.col2 DIV - tab
2ded0 30 2e 63 6f 6c 32 20 63 6f 6c 30 20 46 52 4f 4d  0.col2 col0 FROM
2dee0 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
2def0 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  ab0.col2..----..
2df00 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a 73 6b  -1..-1..-1....sk
2df10 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
2df20 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69   compatible..ski
2df30 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
2df40 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
2df50 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
2df60 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
2df70 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
2df80 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 34 36 33  wsort label-1463
2df90 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 74 61 62  ..SELECT ALL tab
2dfa0 30 2e 63 6f 6c 32 20 2f 20 2d 20 74 61 62 30 2e  0.col2 / - tab0.
2dfb0 63 6f 6c 32 20 63 6f 6c 30 20 46 52 4f 4d 20 74  col2 col0 FROM t
2dfc0 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab0 GROUP BY tab
2dfd0 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  0.col2..----..-1
2dfe0 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a 71 75 65 72  ..-1..-1....quer
2dff0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2e000 45 43 54 20 41 4c 4c 20 35 20 2b 20 2d 20 63 6f  ECT ALL 5 + - co
2e010 6c 30 20 2a 20 74 61 62 31 2e 63 6f 6c 30 20 41  l0 * tab1.col0 A
2e020 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
2e030 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 30 0d 0a   GROUP BY col0..
2e040 2d 2d 2d 2d 0d 0a 2d 34 37 39 0d 0a 2d 36 37 31  ----..-479..-671
2e050 39 0d 0a 2d 37 37 39 0d 0a 0d 0a 71 75 65 72 79  9..-779....query
2e060 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
2e070 43 54 20 2d 20 63 6f 72 30 2e 63 6f 6c 30 20 2a  CT - cor0.col0 *
2e080 20 2d 20 63 6f 72 30 2e 63 6f 6c 30 20 41 53 20   - cor0.col0 AS 
2e090 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
2e0a0 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
2e0b0 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor0.col0..----.
2e0c0 0a 34 38 34 0d 0a 36 37 32 34 0d 0a 37 38 34 0d  .484..6724..784.
2e0d0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2e0e0 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 38 39 20  rt..SELECT + 89 
2e0f0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
2e100 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
2e110 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 38 39 0d 0a  col1..----..89..
2e120 38 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  89....skipif pos
2e130 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
2e140 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
2e150 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
2e160 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
2e170 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2e180 53 45 4c 45 43 54 20 63 6f 6c 30 20 63 6f 6c 30  SELECT col0 col0
2e190 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
2e1a0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
2e1b0 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 30  .col0, cor0.col0
2e1c0 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32 38 0d 0a  ..----..22..28..
2e1d0 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  82....query I ro
2e1e0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
2e1f0 53 54 49 4e 43 54 20 2d 20 39 39 20 41 53 20 63  STINCT - 99 AS c
2e200 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 2c 20 74  ol1 FROM tab0, t
2e210 61 62 31 20 63 6f 72 30 20 47 52 4f 55 50 20 42  ab1 cor0 GROUP B
2e220 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y tab0.col0..---
2e230 2d 0d 0a 2d 39 39 0d 0a 0d 0a 6f 6e 6c 79 69 66  -..-99....onlyif
2e240 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
2e250 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
2e260 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
2e270 73 6f 72 74 20 6c 61 62 65 6c 2d 31 34 36 39 0d  sort label-1469.
2e280 0a 53 45 4c 45 43 54 20 2b 20 36 39 20 44 49 56  .SELECT + 69 DIV
2e290 20 2d 20 74 61 62 32 2e 63 6f 6c 31 20 41 53 20   - tab2.col1 AS 
2e2a0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 47  col0 FROM tab2 G
2e2b0 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
2e2c0 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d  1..----..-1..-1.
2e2d0 0a 2d 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .-1....skipif my
2e2e0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2e2f0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2e300 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 34 36 39  wsort label-1469
2e310 0d 0a 53 45 4c 45 43 54 20 2b 20 36 39 20 2f 20  ..SELECT + 69 / 
2e320 2d 20 74 61 62 32 2e 63 6f 6c 31 20 41 53 20 63  - tab2.col1 AS c
2e330 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52  ol0 FROM tab2 GR
2e340 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31  OUP BY tab2.col1
2e350 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a  ..----..-1..-1..
2e360 2d 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  -1....query I ro
2e370 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 35 37  wsort..SELECT 57
2e380 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
2e390 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
2e3a0 2e 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 31  .col2, cor0.col1
2e3b0 0d 0a 2d 2d 2d 2d 0d 0a 35 37 0d 0a 35 37 0d 0a  ..----..57..57..
2e3c0 35 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  57....query I ro
2e3d0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
2e3e0 72 30 2e 63 6f 6c 31 20 2a 20 63 6f 72 30 2e 63  r0.col1 * cor0.c
2e3f0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol0 FROM tab1 AS
2e400 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
2e410 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63  or0.col1, cor0.c
2e420 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 33 32 0d 0a  ol0..----..132..
2e430 31 35 39 36 0d 0a 33 36 30 38 0d 0a 0d 0a 71 75  1596..3608....qu
2e440 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2e450 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
2e460 20 63 6f 72 30 2e 63 6f 6c 31 20 46 52 4f 4d 20   cor0.col1 FROM 
2e470 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f  tab0 AS cor0 GRO
2e480 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 2c  UP BY cor0.col1,
2e490 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   cor0.col1..----
2e4a0 0d 0a 30 0d 0a 38 31 0d 0a 0d 0a 71 75 65 72 79  ..0..81....query
2e4b0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
2e4c0 43 54 20 63 6f 72 30 2e 63 6f 6c 32 20 2a 20 2b  CT cor0.col2 * +
2e4d0 20 35 38 20 46 52 4f 4d 20 74 61 62 30 20 63 6f   58 FROM tab0 co
2e4e0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
2e4f0 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 33 39  .col2..----..139
2e500 32 0d 0a 32 32 30 34 0d 0a 34 35 38 32 0d 0a 0d  2..2204..4582...
2e510 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2e520 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2e530 54 20 2d 20 74 61 62 30 2e 63 6f 6c 32 20 46 52  T - tab0.col2 FR
2e540 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59  OM tab0 GROUP BY
2e550 20 74 61 62 30 2e 63 6f 6c 32 20 48 41 56 49 4e   tab0.col2 HAVIN
2e560 47 20 4e 55 4c 4c 20 49 4e 20 28 20 74 61 62 30  G NULL IN ( tab0
2e570 2e 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d  .col2 )..----...
2e580 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2e590 0d 0a 53 45 4c 45 43 54 20 2b 20 34 38 20 46 52  ..SELECT + 48 FR
2e5a0 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
2e5b0 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   tab1.col2..----
2e5c0 0d 0a 34 38 0d 0a 34 38 0d 0a 34 38 0d 0a 0d 0a  ..48..48..48....
2e5d0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2e5e0 0a 53 45 4c 45 43 54 20 2b 20 2b 20 30 20 41 53  .SELECT + + 0 AS
2e5f0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
2e600 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
2e610 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a  l2..----..0..0..
2e620 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
2e630 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
2e640 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
2e650 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2e660 6c 61 62 65 6c 2d 31 34 37 37 0d 0a 53 45 4c 45  label-1477..SELE
2e670 43 54 20 41 4c 4c 20 2b 20 39 33 20 44 49 56 20  CT ALL + 93 DIV 
2e680 38 38 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  88 col1 FROM tab
2e690 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
2e6a0 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31  col2..----..1..1
2e6b0 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..1....skipif my
2e6c0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2e6d0 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73  ible..skipif pos
2e6e0 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
2e6f0 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
2e700 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
2e710 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
2e720 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2e730 61 62 65 6c 2d 31 34 37 37 0d 0a 53 45 4c 45 43  abel-1477..SELEC
2e740 54 20 41 4c 4c 20 2b 20 39 33 20 2f 20 38 38 20  T ALL + 93 / 88 
2e750 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 47  col1 FROM tab2 G
2e760 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
2e770 32 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31  2..----..1..1..1
2e780 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2e790 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
2e7a0 32 34 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  24 AS col1 FROM 
2e7b0 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
2e7c0 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32  b1.col2..----..2
2e7d0 34 0d 0a 32 34 0d 0a 32 34 0d 0a 0d 0a 71 75 65  4..24..24....que
2e7e0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2e7f0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
2e800 37 33 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  73 FROM tab2 AS 
2e810 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
2e820 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f  r0.col1, cor0.co
2e830 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d  l1, cor0.col1..-
2e840 2d 2d 2d 0d 0a 2d 37 33 0d 0a 0d 0a 71 75 65 72  ---..-73....quer
2e850 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2e860 45 43 54 20 2b 20 63 6f 72 30 2e 63 6f 6c 30 20  ECT + cor0.col0 
2e870 2a 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  * col0 FROM tab2
2e880 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
2e890 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72  Y cor0.col1, cor
2e8a0 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32  0.col0..----..22
2e8b0 35 0d 0a 38 32 38 31 0d 0a 38 34 36 34 0d 0a 0d  5..8281..8464...
2e8c0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2e8d0 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 63 6f 6c  ..SELECT - - col
2e8e0 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  1 AS col2 FROM t
2e8f0 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
2e900 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 34  1.col1..----..44
2e910 0d 0a 35 37 0d 0a 36 0d 0a 0d 0a 71 75 65 72 79  ..57..6....query
2e920 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
2e930 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20  CT DISTINCT - + 
2e940 74 61 62 31 2e 63 6f 6c 31 20 2a 20 2b 20 39 39  tab1.col1 * + 99
2e950 20 2b 20 2d 20 36 30 20 46 52 4f 4d 20 74 61 62   + - 60 FROM tab
2e960 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
2e970 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 34 31  col1..----..-441
2e980 36 0d 0a 2d 35 37 30 33 0d 0a 2d 36 35 34 0d 0a  6..-5703..-654..
2e990 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2e9a0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
2e9b0 37 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  7 FROM tab2 GROU
2e9c0 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a  P BY tab2.col1..
2e9d0 2d 2d 2d 2d 0d 0a 2d 37 0d 0a 2d 37 0d 0a 2d 37  ----..-7..-7..-7
2e9e0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2e9f0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
2ea00 49 4e 43 54 20 2d 20 33 39 20 41 53 20 63 6f 6c  INCT - 39 AS col
2ea10 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
2ea20 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
2ea30 61 62 31 20 41 53 20 63 6f 72 31 20 47 52 4f 55  ab1 AS cor1 GROU
2ea40 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 2c 20  P BY cor0.col2, 
2ea50 63 6f 72 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor1.col0..----.
2ea60 0a 2d 33 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-39....query I 
2ea70 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2ea80 44 49 53 54 49 4e 43 54 20 35 30 20 2b 20 36 20  DISTINCT 50 + 6 
2ea90 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20  FROM tab1 GROUP 
2eaa0 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d  BY tab1.col2..--
2eab0 2d 2d 0d 0a 35 36 0d 0a 0d 0a 71 75 65 72 79 20  --..56....query 
2eac0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2ead0 54 20 2b 20 34 34 20 2d 20 2b 20 33 39 20 41 53  T + 44 - + 39 AS
2eae0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
2eaf0 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
2eb00 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 35 0d 0a 35 0d 0a  l2..----..5..5..
2eb10 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
2eb20 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 32  sort..SELECT + 2
2eb30 38 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  8 FROM tab1 AS c
2eb40 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
2eb50 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 38  0.col0..----..28
2eb60 0d 0a 32 38 0d 0a 32 38 0d 0a 0d 0a 71 75 65 72  ..28..28....quer
2eb70 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2eb80 45 43 54 20 2d 20 43 41 53 45 20 2d 20 63 6f 72  ECT - CASE - cor
2eb90 30 2e 63 6f 6c 32 20 57 48 45 4e 20 2b 20 34 36  0.col2 WHEN + 46
2eba0 20 2d 20 2b 20 38 31 20 54 48 45 4e 20 4e 55 4c   - + 81 THEN NUL
2ebb0 4c 20 57 48 45 4e 20 2b 20 63 6f 6c 32 20 54 48  L WHEN + col2 TH
2ebc0 45 4e 20 4e 55 4c 4c 20 45 4c 53 45 20 2b 20 63  EN NULL ELSE + c
2ebd0 6f 72 30 2e 63 6f 6c 31 20 2d 20 63 6f 72 30 2e  or0.col1 - cor0.
2ebe0 63 6f 6c 30 20 45 4e 44 20 2b 20 63 6f 72 30 2e  col0 END + cor0.
2ebf0 63 6f 6c 31 20 2a 20 2b 20 63 6f 72 30 2e 63 6f  col1 * + cor0.co
2ec00 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l1 FROM tab0 AS 
2ec10 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
2ec20 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f  r0.col1, cor0.co
2ec30 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d  l0, cor0.col2..-
2ec40 2d 2d 2d 0d 0a 32 36 0d 0a 36 35 32 33 0d 0a 38  ---..26..6523..8
2ec50 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  3....onlyif mysq
2ec60 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
2ec70 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
2ec80 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2ec90 6c 61 62 65 6c 2d 31 34 38 39 0d 0a 53 45 4c 45  label-1489..SELE
2eca0 43 54 20 41 4c 4c 20 2b 20 63 6f 72 30 2e 63 6f  CT ALL + cor0.co
2ecb0 6c 31 20 44 49 56 20 2d 20 33 33 20 41 53 20 63  l1 DIV - 33 AS c
2ecc0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol0 FROM tab1 AS
2ecd0 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
2ece0 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  or0.col1..----..
2ecf0 2d 31 0d 0a 2d 31 0d 0a 30 0d 0a 0d 0a 73 6b 69  -1..-1..0....ski
2ed00 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2ed10 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
2ed20 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2ed30 6c 2d 31 34 38 39 0d 0a 53 45 4c 45 43 54 20 41  l-1489..SELECT A
2ed40 4c 4c 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 2f  LL + cor0.col1 /
2ed50 20 2d 20 33 33 20 41 53 20 63 6f 6c 30 20 46 52   - 33 AS col0 FR
2ed60 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
2ed70 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
2ed80 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31  l1..----..-1..-1
2ed90 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..0....query I r
2eda0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
2edb0 4c 4c 20 2b 20 63 6f 72 30 2e 63 6f 6c 32 20 2a  LL + cor0.col2 *
2edc0 20 4e 55 4c 4c 49 46 20 28 20 2b 20 63 6f 72 30   NULLIF ( + cor0
2edd0 2e 63 6f 6c 32 2c 20 2b 20 63 6f 72 30 2e 63 6f  .col2, + cor0.co
2ede0 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41  l1 ) FROM tab2 A
2edf0 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
2ee00 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 72 30 2e  cor0.col2, cor0.
2ee10 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d  col1, cor0.col1.
2ee20 0a 2d 2d 2d 2d 0d 0a 33 33 36 34 0d 0a 36 32 34  .----..3364..624
2ee30 31 0d 0a 37 35 36 39 0d 0a 0d 0a 73 6b 69 70 69  1..7569....skipi
2ee40 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
2ee50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
2ee60 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
2ee70 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
2ee80 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
2ee90 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
2eea0 63 6f 6c 31 20 2b 20 33 39 20 63 6f 6c 30 20 46  col1 + 39 col0 F
2eeb0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
2eec0 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
2eed0 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 32 30 0d 0a  ol1..----..120..
2eee0 33 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  39....query I ro
2eef0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
2ef00 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 57  col2 FROM tab2 W
2ef10 48 45 52 45 20 2b 20 74 61 62 32 2e 63 6f 6c 31  HERE + tab2.col1
2ef20 20 2a 20 74 61 62 32 2e 63 6f 6c 31 20 3e 3d 20   * tab2.col1 >= 
2ef30 28 20 4e 55 4c 4c 20 29 20 47 52 4f 55 50 20 42  ( NULL ) GROUP B
2ef40 59 20 63 6f 6c 32 20 48 41 56 49 4e 47 20 4e 4f  Y col2 HAVING NO
2ef50 54 20 4e 55 4c 4c 20 4e 4f 54 20 42 45 54 57 45  T NULL NOT BETWE
2ef60 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 4e 55 4c 4c  EN NULL AND NULL
2ef70 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
2ef80 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2ef90 54 20 41 4c 4c 20 63 6f 72 30 2e 63 6f 6c 31 20  T ALL cor0.col1 
2efa0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
2efb0 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
2efc0 42 59 20 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f  BY col2, cor0.co
2efd0 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d 0a 35 37  l1..----..44..57
2efe0 0d 0a 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..6....query I r
2eff0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
2f000 4c 4c 20 32 32 20 41 53 20 63 6f 6c 31 20 46 52  LL 22 AS col1 FR
2f010 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
2f020 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
2f030 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32 32  l0..----..22..22
2f040 0d 0a 32 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..22....query I 
2f050 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2f060 41 4c 4c 20 37 37 20 41 53 20 63 6f 6c 31 20 46  ALL 77 AS col1 F
2f070 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
2f080 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31   CROSS JOIN tab1
2f090 20 63 6f 72 31 20 47 52 4f 55 50 20 42 59 20 63   cor1 GROUP BY c
2f0a0 6f 72 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  or1.col2..----..
2f0b0 37 37 0d 0a 37 37 0d 0a 37 37 0d 0a 0d 0a 71 75  77..77..77....qu
2f0c0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2f0d0 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 72 30  ELECT ALL - cor0
2f0e0 2e 63 6f 6c 32 20 2d 20 63 6f 72 30 2e 63 6f 6c  .col2 - cor0.col
2f0f0 32 20 2a 20 2d 20 4e 55 4c 4c 49 46 20 28 20 63  2 * - NULLIF ( c
2f100 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63  or0.col0, cor0.c
2f110 6f 6c 30 20 2b 20 2b 20 39 36 20 29 20 46 52 4f  ol0 + + 96 ) FRO
2f120 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
2f130 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
2f140 32 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  2, cor0.col0..--
2f150 2d 2d 0d 0a 31 32 31 38 0d 0a 35 32 37 38 0d 0a  --..1218..5278..
2f160 37 31 31 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  7110....skipif p
2f170 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
2f180 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
2f190 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
2f1a0 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
2f1b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2f1c0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 33  ..SELECT ALL - 3
2f1d0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
2f1e0 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
2f1f0 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 2d 33  l0..----..-3..-3
2f200 0d 0a 2d 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..-3....query I 
2f210 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2f220 44 49 53 54 49 4e 43 54 20 31 35 20 41 53 20 63  DISTINCT 15 AS c
2f230 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  ol0 FROM tab2 co
2f240 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
2f250 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d  .col1..----..15.
2f260 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2f270 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 72  rt..SELECT + cor
2f280 30 2e 63 6f 6c 30 20 2a 20 2d 20 63 6f 72 30 2e  0.col0 * - cor0.
2f290 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f  col0 AS col1 FRO
2f2a0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47  M tab1 AS cor0 G
2f2b0 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
2f2c0 31 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  1, cor0.col0..--
2f2d0 2d 2d 0d 0a 2d 34 38 34 0d 0a 2d 36 37 32 34 0d  --..-484..-6724.
2f2e0 0a 2d 37 38 34 0d 0a 0d 0a 71 75 65 72 79 20 49  .-784....query I
2f2f0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2f300 20 2d 20 28 20 31 31 20 29 20 2a 20 2d 20 74 61   - ( 11 ) * - ta
2f310 62 32 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  b2.col2 FROM tab
2f320 32 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d  2 GROUP BY col2.
2f330 0a 2d 2d 2d 2d 0d 0a 36 33 38 0d 0a 38 36 39 0d  .----..638..869.
2f340 0a 39 35 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .957....query I 
2f350 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2f360 41 4c 4c 20 38 33 20 46 52 4f 4d 20 74 61 62 30  ALL 83 FROM tab0
2f370 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a   GROUP BY col1..
2f380 2d 2d 2d 2d 0d 0a 38 33 0d 0a 38 33 0d 0a 0d 0a  ----..83..83....
2f390 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2f3a0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 74 61  .SELECT ALL - ta
2f3b0 62 31 2e 63 6f 6c 31 20 2a 20 74 61 62 31 2e 63  b1.col1 * tab1.c
2f3c0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol1 FROM tab1 GR
2f3d0 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31  OUP BY tab1.col1
2f3e0 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 33 36 0d 0a 2d  ..----..-1936..-
2f3f0 33 32 34 39 0d 0a 2d 33 36 0d 0a 0d 0a 71 75 65  3249..-36....que
2f400 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2f410 4c 45 43 54 20 2d 20 2d 20 74 61 62 30 2e 63 6f  LECT - - tab0.co
2f420 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l1 AS col0 FROM 
2f430 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61  tab0 GROUP BY ta
2f440 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30  b0.col1..----..0
2f450 0d 0a 38 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..81....onlyif m
2f460 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
2f470 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
2f480 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2f490 72 74 20 6c 61 62 65 6c 2d 31 35 30 34 0d 0a 53  rt label-1504..S
2f4a0 45 4c 45 43 54 20 41 4c 4c 20 2b 20 74 61 62 31  ELECT ALL + tab1
2f4b0 2e 63 6f 6c 30 20 44 49 56 20 74 61 62 31 2e 63  .col0 DIV tab1.c
2f4c0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol0 FROM tab1 GR
2f4d0 4f 55 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d  OUP BY col0..---
2f4e0 2d 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a 73 6b  -..1..1..1....sk
2f4f0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
2f500 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
2f510 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2f520 65 6c 2d 31 35 30 34 0d 0a 53 45 4c 45 43 54 20  el-1504..SELECT 
2f530 41 4c 4c 20 2b 20 74 61 62 31 2e 63 6f 6c 30 20  ALL + tab1.col0 
2f540 2f 20 74 61 62 31 2e 63 6f 6c 30 20 46 52 4f 4d  / tab1.col0 FROM
2f550 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 63   tab1 GROUP BY c
2f560 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d  ol0..----..1..1.
2f570 0a 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  .1....query I ro
2f580 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
2f590 4c 20 2d 20 63 6f 72 30 2e 63 6f 6c 32 20 46 52  L - cor0.col2 FR
2f5a0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
2f5b0 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
2f5c0 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63  l0, cor0.col1, c
2f5d0 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 0d 0a  ol2..----..-24..
2f5e0 2d 33 38 0d 0a 2d 37 39 0d 0a 0d 0a 71 75 65 72  -38..-79....quer
2f5f0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2f600 45 43 54 20 37 31 20 41 53 20 63 6f 6c 32 20 46  ECT 71 AS col2 F
2f610 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
2f620 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
2f630 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  ol0, cor0.col0..
2f640 2d 2d 2d 2d 0d 0a 37 31 0d 0a 37 31 0d 0a 37 31  ----..71..71..71
2f650 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2f660 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
2f670 63 6f 72 30 2e 63 6f 6c 31 20 46 52 4f 4d 20 74  cor0.col1 FROM t
2f680 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab0 AS cor0 GROU
2f690 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20  P BY cor0.col1, 
2f6a0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30  col0..----..0..0
2f6b0 0d 0a 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..81....query I 
2f6c0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2f6d0 2d 20 63 6f 6c 32 20 2b 20 37 37 20 46 52 4f 4d  - col2 + 77 FROM
2f6e0 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52   tab0 AS cor0 GR
2f6f0 4f 55 50 20 42 59 20 63 6f 6c 32 2c 20 63 6f 72  OUP BY col2, cor
2f700 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  0.col0..----..-2
2f710 0d 0a 33 39 0d 0a 35 33 0d 0a 0d 0a 71 75 65 72  ..39..53....quer
2f720 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2f730 45 43 54 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20  ECT + cor0.col1 
2f740 2d 20 63 6f 72 30 2e 63 6f 6c 30 20 46 52 4f 4d  - cor0.col0 FROM
2f750 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52   tab1 AS cor0 GR
2f760 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30  OUP BY cor0.col0
2f770 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  , cor0.col1..---
2f780 2d 0d 0a 2d 31 36 0d 0a 2d 33 38 0d 0a 32 39 0d  -..-16..-38..29.
2f790 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2f7a0 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 32 30 20  rt..SELECT - 20 
2f7b0 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
2f7c0 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  BY col1..----..-
2f7d0 32 30 0d 0a 2d 32 30 0d 0a 0d 0a 71 75 65 72 79  20..-20....query
2f7e0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
2f7f0 43 54 20 2b 20 34 39 20 46 52 4f 4d 20 74 61 62  CT + 49 FROM tab
2f800 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
2f810 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 39 0d 0a  col1..----..49..
2f820 34 39 0d 0a 34 39 0d 0a 0d 0a 71 75 65 72 79 20  49..49....query 
2f830 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2f840 54 20 44 49 53 54 49 4e 43 54 20 2b 20 34 33 20  T DISTINCT + 43 
2f850 2b 20 74 61 62 30 2e 63 6f 6c 31 20 41 53 20 63  + tab0.col1 AS c
2f860 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol2 FROM tab0 GR
2f870 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 31  OUP BY tab0.col1
2f880 0d 0a 2d 2d 2d 2d 0d 0a 31 32 34 0d 0a 34 33 0d  ..----..124..43.
2f890 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2f8a0 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 35 34 20  rt..SELECT - 54 
2f8b0 2a 20 34 38 20 46 52 4f 4d 20 74 61 62 31 20 41  * 48 FROM tab1 A
2f8c0 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
2f8d0 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  cor0.col1..----.
2f8e0 0a 2d 32 35 39 32 0d 0a 2d 32 35 39 32 0d 0a 2d  .-2592..-2592..-
2f8f0 32 35 39 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  2592....query I 
2f900 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2f910 41 4c 4c 20 2d 20 2d 20 39 32 20 41 53 20 63 6f  ALL - - 92 AS co
2f920 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f  l1 FROM tab2 GRO
2f930 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d  UP BY tab2.col0.
2f940 0a 2d 2d 2d 2d 0d 0a 39 32 0d 0a 39 32 0d 0a 39  .----..92..92..9
2f950 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
2f960 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
2f970 20 2d 20 31 31 20 2b 20 34 39 20 46 52 4f 4d 20   - 11 + 49 FROM 
2f980 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61  tab2 GROUP BY ta
2f990 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 33  b2.col0..----..3
2f9a0 38 0d 0a 33 38 0d 0a 33 38 0d 0a 0d 0a 71 75 65  8..38..38....que
2f9b0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2f9c0 4c 45 43 54 20 36 39 20 46 52 4f 4d 20 74 61 62  LECT 69 FROM tab
2f9d0 32 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20  2 AS cor0 CROSS 
2f9e0 4a 4f 49 4e 20 74 61 62 32 20 41 53 20 63 6f 72  JOIN tab2 AS cor
2f9f0 31 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  1 GROUP BY cor0.
2fa00 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 36 39 0d 0a  col1..----..69..
2fa10 36 39 0d 0a 36 39 0d 0a 0d 0a 73 6b 69 70 69 66  69..69....skipif
2fa20 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
2fa30 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
2fa40 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
2fa50 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
2fa60 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
2fa70 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 36  rt..SELECT ALL 6
2fa80 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
2fa90 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
2faa0 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   cor0.col0..----
2fab0 0d 0a 36 0d 0a 36 0d 0a 36 0d 0a 0d 0a 71 75 65  ..6..6..6....que
2fac0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2fad0 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20 32 38 20  LECT ALL - - 28 
2fae0 2b 20 74 61 62 30 2e 63 6f 6c 31 20 41 53 20 63  + tab0.col1 AS c
2faf0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47 52  ol2 FROM tab0 GR
2fb00 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 31  OUP BY tab0.col1
2fb10 0d 0a 2d 2d 2d 2d 0d 0a 31 30 39 0d 0a 32 38 0d  ..----..109..28.
2fb20 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2fb30 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 72  rt..SELECT - cor
2fb40 30 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  0.col0 FROM tab2
2fb50 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
2fb60 59 20 63 6f 6c 30 2c 20 63 6f 6c 32 0d 0a 2d 2d  Y col0, col2..--
2fb70 2d 2d 0d 0a 2d 31 35 0d 0a 2d 39 31 0d 0a 2d 39  --..-15..-91..-9
2fb80 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
2fb90 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
2fba0 54 49 4e 43 54 20 2d 20 63 6f 72 30 2e 63 6f 6c  TINCT - cor0.col
2fbb0 31 20 2a 20 2b 20 31 32 20 46 52 4f 4d 20 74 61  1 * + 12 FROM ta
2fbc0 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
2fbd0 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d   BY cor0.col1..-
2fbe0 2d 2d 2d 0d 0a 2d 39 37 32 0d 0a 30 0d 0a 0d 0a  ---..-972..0....
2fbf0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2fc00 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
2fc10 20 36 36 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   66 AS col0 FROM
2fc20 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74   tab2 GROUP BY t
2fc30 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  ab2.col2..----..
2fc40 36 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  66....query I ro
2fc50 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
2fc60 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
2fc70 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
2fc80 72 30 2e 63 6f 6c 32 20 48 41 56 49 4e 47 20 4e  r0.col2 HAVING N
2fc90 55 4c 4c 20 4e 4f 54 20 42 45 54 57 45 45 4e 20  ULL NOT BETWEEN 
2fca0 4e 55 4c 4c 20 41 4e 44 20 28 20 4e 55 4c 4c 20  NULL AND ( NULL 
2fcb0 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  )..----....query
2fcc0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
2fcd0 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 30  CT DISTINCT col0
2fce0 20 2a 20 74 61 62 31 2e 63 6f 6c 30 20 46 52 4f   * tab1.col0 FRO
2fcf0 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
2fd00 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab1.col0..----.
2fd10 0a 34 38 34 0d 0a 36 37 32 34 0d 0a 37 38 34 0d  .484..6724..784.
2fd20 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2fd30 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
2fd40 20 63 6f 72 30 2e 63 6f 6c 30 20 46 52 4f 4d 20   cor0.col0 FROM 
2fd50 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f  tab0 AS cor0 GRO
2fd60 55 50 20 42 59 20 63 6f 6c 32 2c 20 63 6f 72 30  UP BY col2, cor0
2fd70 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 36  .col0..----..-26
2fd80 0d 0a 2d 34 33 0d 0a 2d 38 33 0d 0a 0d 0a 71 75  ..-43..-83....qu
2fd90 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2fda0 45 4c 45 43 54 20 41 4c 4c 20 2b 20 38 30 20 41  ELECT ALL + 80 A
2fdb0 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
2fdc0 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
2fdd0 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 72  Y cor0.col0, cor
2fde0 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 38 30  0.col0..----..80
2fdf0 0d 0a 38 30 0d 0a 38 30 0d 0a 0d 0a 73 6b 69 70  ..80..80....skip
2fe00 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
2fe10 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
2fe20 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
2fe30 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
2fe40 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
2fe50 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 33 20 63  sort..SELECT 3 c
2fe60 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
2fe70 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
2fe80 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a  ol1, cor0.col2..
2fe90 2d 2d 2d 2d 0d 0a 33 0d 0a 33 0d 0a 33 0d 0a 0d  ----..3..3..3...
2fea0 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
2feb0 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
2fec0 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
2fed0 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
2fee0 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
2fef0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2ff00 54 20 2d 20 31 38 20 2a 20 2b 20 63 6f 72 31 2e  T - 18 * + cor1.
2ff10 63 6f 6c 32 20 63 6f 6c 31 20 46 52 4f 4d 20 74  col2 col1 FROM t
2ff20 61 62 32 20 41 53 20 63 6f 72 30 20 43 52 4f 53  ab2 AS cor0 CROS
2ff30 53 20 4a 4f 49 4e 20 74 61 62 32 20 63 6f 72 31  S JOIN tab2 cor1
2ff40 20 47 52 4f 55 50 20 42 59 20 63 6f 72 31 2e 63   GROUP BY cor1.c
2ff50 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 34 34  ol2..----..-1044
2ff60 0d 0a 2d 31 34 32 32 0d 0a 2d 31 35 36 36 0d 0a  ..-1422..-1566..
2ff70 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2ff80 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
2ff90 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
2ffa0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2ffb0 65 6c 2d 31 35 32 38 0d 0a 53 45 4c 45 43 54 20  el-1528..SELECT 
2ffc0 41 4c 4c 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20  ALL + cor0.col1 
2ffd0 44 49 56 20 2b 20 33 36 20 46 52 4f 4d 20 74 61  DIV + 36 FROM ta
2ffe0 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b2 AS cor0 GROUP
2fff0 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63   BY cor0.col1, c
30000 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d  ol1..----..1..1.
30010 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .1....skipif mys
30020 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
30030 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
30040 73 6f 72 74 20 6c 61 62 65 6c 2d 31 35 32 38 0d  sort label-1528.
30050 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f  .SELECT ALL + co
30060 72 30 2e 63 6f 6c 31 20 2f 20 2b 20 33 36 20 46  r0.col1 / + 36 F
30070 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
30080 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
30090 6f 6c 31 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  ol1, col1..----.
300a0 0a 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a 71 75 65 72  .1..1..1....quer
300b0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
300c0 45 43 54 20 41 4c 4c 20 2d 20 31 39 20 46 52 4f  ECT ALL - 19 FRO
300d0 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
300e0 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 0d  col1..----..-19.
300f0 0a 2d 31 39 0d 0a 2d 31 39 0d 0a 0d 0a 71 75 65  .-19..-19....que
30100 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
30110 4c 45 43 54 20 32 20 2b 20 2b 20 63 6f 72 30 2e  LECT 2 + + cor0.
30120 63 6f 6c 31 20 2a 20 2b 20 63 6f 72 30 2e 63 6f  col1 * + cor0.co
30130 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l1 FROM tab2 AS 
30140 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
30150 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31  r0.col1..----..1
30160 36 38 33 0d 0a 33 34 38 33 0d 0a 33 37 32 33 0d  683..3483..3723.
30170 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
30180 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
30190 4e 43 54 20 2b 20 35 30 20 2d 20 63 6f 72 30 2e  NCT + 50 - cor0.
301a0 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f  col0 AS col1 FRO
301b0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
301c0 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
301d0 32 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  2, cor0.col0..--
301e0 2d 2d 0d 0a 2d 34 31 0d 0a 2d 34 32 0d 0a 33 35  --..-41..-42..35
301f0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
30200 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
30210 2b 20 63 6f 72 30 2e 63 6f 6c 32 20 41 53 20 63  + cor0.col2 AS c
30220 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  ol0 FROM tab2 co
30230 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 32  r0 GROUP BY col2
30240 0d 0a 2d 2d 2d 2d 0d 0a 35 38 0d 0a 37 39 0d 0a  ..----..58..79..
30250 38 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  87....query I ro
30260 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
30270 53 54 49 4e 43 54 20 2d 20 37 31 20 41 53 20 63  STINCT - 71 AS c
30280 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
30290 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
302a0 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 31 0d 0a  ol1..----..-71..
302b0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
302c0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f  t..SELECT ALL co
302d0 72 30 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20  r0.col1 AS col0 
302e0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
302f0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
30300 63 6f 6c 32 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d  col2, col1..----
30310 0d 0a 30 0d 0a 30 0d 0a 38 31 0d 0a 0d 0a 71 75  ..0..0..81....qu
30320 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
30330 45 4c 45 43 54 20 41 4c 4c 20 31 36 20 46 52 4f  ELECT ALL 16 FRO
30340 4d 20 74 61 62 30 20 63 6f 72 30 20 47 52 4f 55  M tab0 cor0 GROU
30350 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  P BY col0..----.
30360 0a 31 36 0d 0a 31 36 0d 0a 31 36 0d 0a 0d 0a 73  .16..16..16....s
30370 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
30380 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
30390 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
303a0 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
303b0 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
303c0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
303d0 2b 20 63 6f 6c 31 20 2b 20 63 6f 6c 31 20 63 6f  + col1 + col1 co
303e0 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f  l2 FROM tab1 GRO
303f0 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d  UP BY tab1.col1.
30400 0a 2d 2d 2d 2d 0d 0a 31 31 34 0d 0a 31 32 0d 0a  .----..114..12..
30410 38 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  88....query I ro
30420 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
30430 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 46 52  STINCT + col0 FR
30440 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
30450 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
30460 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d  l1, cor0.col0..-
30470 2d 2d 2d 0d 0a 32 32 0d 0a 32 38 0d 0a 38 32 0d  ---..22..28..82.
30480 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
30490 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c  rt..SELECT - col
304a0 32 20 2a 20 74 61 62 31 2e 63 6f 6c 32 20 46 52  2 * tab1.col2 FR
304b0 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
304c0 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   tab1.col2..----
304d0 0d 0a 2d 32 30 32 35 0d 0a 2d 35 30 34 31 0d 0a  ..-2025..-5041..
304e0 2d 36 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -64....query I r
304f0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
30500 20 34 35 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   45 AS col2 FROM
30510 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47 52   tab2 AS cor0 GR
30520 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30  OUP BY cor0.col0
30530 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  , cor0.col0..---
30540 2d 0d 0a 34 35 0d 0a 34 35 0d 0a 34 35 0d 0a 0d  -..45..45..45...
30550 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
30560 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e 63 6f  ..SELECT cor0.co
30570 6c 31 20 2a 20 63 6f 72 30 2e 63 6f 6c 31 20 41  l1 * cor0.col1 A
30580 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
30590 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
305a0 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  Y col1..----..0.
305b0 0a 36 35 36 31 0d 0a 0d 0a 71 75 65 72 79 20 49  .6561....query I
305c0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
305d0 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 72 30   DISTINCT + cor0
305e0 2e 63 6f 6c 31 20 2a 20 2d 20 39 39 20 46 52 4f  .col1 * - 99 FRO
305f0 4d 20 74 61 62 30 20 63 6f 72 30 20 47 52 4f 55  M tab0 cor0 GROU
30600 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a  P BY cor0.col1..
30610 2d 2d 2d 2d 0d 0a 2d 38 30 31 39 0d 0a 30 0d 0a  ----..-8019..0..
30620 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
30630 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 72 30  t..SELECT - cor0
30640 2e 63 6f 6c 30 20 2d 20 35 31 20 41 53 20 63 6f  .col0 - 51 AS co
30650 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
30660 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
30670 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f  r0.col0, cor0.co
30680 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 34 0d 0a  l2..----..-134..
30690 2d 37 37 0d 0a 2d 39 34 0d 0a 0d 0a 71 75 65 72  -77..-94....quer
306a0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
306b0 45 43 54 20 41 4c 4c 20 2b 20 63 6f 72 30 2e 63  ECT ALL + cor0.c
306c0 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
306d0 20 74 61 62 32 20 63 6f 72 30 20 47 52 4f 55 50   tab2 cor0 GROUP
306e0 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d   BY cor0.col0..-
306f0 2d 2d 2d 0d 0a 31 35 0d 0a 39 31 0d 0a 39 32 0d  ---..15..91..92.
30700 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
30710 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 72  rt..SELECT - cor
30720 30 2e 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46  0.col1 AS col1 F
30730 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
30740 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
30750 6f 6c 30 2c 20 63 6f 6c 31 2c 20 63 6f 72 30 2e  ol0, col1, cor0.
30760 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 31 0d  col1..----..-41.
30770 0a 2d 35 39 0d 0a 2d 36 31 0d 0a 0d 0a 6f 6e 6c  .-59..-61....onl
30780 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
30790 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
307a0 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
307b0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 35  rowsort label-15
307c0 34 35 0d 0a 53 45 4c 45 43 54 20 2b 20 31 36 20  45..SELECT + 16 
307d0 44 49 56 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20  DIV - col2 FROM 
307e0 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f  tab0 AS cor0 GRO
307f0 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d  UP BY cor0.col2.
30800 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a  .----..0..0..0..
30810 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
30820 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
30830 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
30840 20 6c 61 62 65 6c 2d 31 35 34 35 0d 0a 53 45 4c   label-1545..SEL
30850 45 43 54 20 2b 20 31 36 20 2f 20 2d 20 63 6f 6c  ECT + 16 / - col
30860 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
30870 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
30880 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  0.col2..----..0.
30890 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49  .0..0....query I
308a0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
308b0 20 41 4c 4c 20 63 6f 72 30 2e 63 6f 6c 31 20 46   ALL cor0.col1 F
308c0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
308d0 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
308e0 6f 6c 32 2c 20 63 6f 6c 32 2c 20 63 6f 72 30 2e  ol2, col2, cor0.
308f0 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 31 0d 0a  col1..----..41..
30900 35 39 0d 0a 36 31 0d 0a 0d 0a 73 6b 69 70 69 66  59..61....skipif
30910 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
30920 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
30930 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
30940 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
30950 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
30960 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 72  rt..SELECT - cor
30970 31 2e 63 6f 6c 30 20 63 6f 6c 32 20 46 52 4f 4d  1.col0 col2 FROM
30980 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 43 52   tab0 AS cor0 CR
30990 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 41 53  OSS JOIN tab2 AS
309a0 20 63 6f 72 31 20 47 52 4f 55 50 20 42 59 20 63   cor1 GROUP BY c
309b0 6f 72 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  or1.col0..----..
309c0 2d 31 35 0d 0a 2d 39 31 0d 0a 2d 39 32 0d 0a 0d  -15..-91..-92...
309d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
309e0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2d  ..SELECT ALL - -
309f0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
30a00 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
30a10 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d 0a 35 37  l1..----..44..57
30a20 0d 0a 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..6....query I r
30a30 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
30a40 49 53 54 49 4e 43 54 20 2d 20 33 38 20 46 52 4f  ISTINCT - 38 FRO
30a50 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
30a60 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
30a70 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 38 0d 0a 0d 0a  0..----..-38....
30a80 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
30a90 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f  .SELECT ALL + co
30aa0 72 30 2e 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20  r0.col0 AS col0 
30ab0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
30ac0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
30ad0 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d  col0, cor0.col1.
30ae0 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32 38 0d 0a 38  .----..22..28..8
30af0 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
30b00 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b  sort..SELECT - +
30b10 20 74 61 62 31 2e 63 6f 6c 30 20 2a 20 74 61 62   tab1.col0 * tab
30b20 31 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  1.col0 FROM tab1
30b30 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
30b40 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 38 34 0d  ol0..----..-484.
30b50 0a 2d 36 37 32 34 0d 0a 2d 37 38 34 0d 0a 0d 0a  .-6724..-784....
30b60 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
30b70 0a 53 45 4c 45 43 54 20 41 4c 4c 20 37 34 20 46  .SELECT ALL 74 F
30b80 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
30b90 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
30ba0 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a  ol1, cor0.col1..
30bb0 2d 2d 2d 2d 0d 0a 37 34 0d 0a 37 34 0d 0a 0d 0a  ----..74..74....
30bc0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
30bd0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
30be0 20 2d 20 34 34 20 2a 20 2b 20 37 37 20 46 52 4f   - 44 * + 77 FRO
30bf0 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
30c00 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  tab1.col2..----.
30c10 0a 2d 33 33 38 38 0d 0a 0d 0a 73 6b 69 70 69 66  .-3388....skipif
30c20 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
30c30 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
30c40 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
30c50 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
30c60 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
30c70 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63  rt..SELECT ALL c
30c80 6f 72 30 2e 63 6f 6c 32 20 63 6f 6c 32 20 46 52  or0.col2 col2 FR
30c90 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
30ca0 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
30cb0 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d  l1, cor0.col2..-
30cc0 2d 2d 2d 0d 0a 32 34 0d 0a 33 38 0d 0a 37 39 0d  ---..24..38..79.
30cd0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
30ce0 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 37 34 20  rt..SELECT + 74 
30cf0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
30d00 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
30d10 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d  col1, cor0.col0.
30d20 0a 2d 2d 2d 2d 0d 0a 37 34 0d 0a 37 34 0d 0a 37  .----..74..74..7
30d30 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  4....skipif post
30d40 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
30d50 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
30d60 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
30d70 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
30d80 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
30d90 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
30da0 20 63 6f 72 30 2e 63 6f 6c 30 20 63 6f 6c 32 20   cor0.col0 col2 
30db0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
30dc0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
30dd0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 0d  col0..----..-15.
30de0 0a 2d 39 31 0d 0a 2d 39 32 0d 0a 0d 0a 71 75 65  .-91..-92....que
30df0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
30e00 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 33 30  LECT DISTINCT 30
30e10 20 2b 20 2b 20 63 6f 72 30 2e 63 6f 6c 30 20 41   + + cor0.col0 A
30e20 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
30e30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
30e40 59 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31  Y col0..----..11
30e50 33 0d 0a 35 36 0d 0a 37 33 0d 0a 0d 0a 71 75 65  3..56..73....que
30e60 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
30e70 4c 45 43 54 20 41 4c 4c 20 31 34 20 46 52 4f 4d  LECT ALL 14 FROM
30e80 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 63   tab1 GROUP BY c
30e90 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 31  ol2..----..14..1
30ea0 34 0d 0a 31 34 0d 0a 0d 0a 71 75 65 72 79 20 49  4..14....query I
30eb0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
30ec0 20 41 4c 4c 20 31 39 20 2a 20 63 6f 72 30 2e 63   ALL 19 * cor0.c
30ed0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
30ee0 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
30ef0 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  or0.col0..----..
30f00 31 37 32 39 0d 0a 31 37 34 38 0d 0a 32 38 35 0d  1729..1748..285.
30f10 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
30f20 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
30f30 4e 43 54 20 38 34 20 41 53 20 63 6f 6c 31 20 46  NCT 84 AS col1 F
30f40 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
30f50 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
30f60 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 38 34 0d 0a 0d  ol0..----..84...
30f70 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
30f80 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 74 61 62  ..SELECT + - tab
30f90 31 2e 63 6f 6c 31 20 2b 20 2d 20 74 61 62 31 2e  1.col1 + - tab1.
30fa0 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f  col1 AS col2 FRO
30fb0 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
30fc0 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab1.col1..----.
30fd0 0a 2d 31 31 34 0d 0a 2d 31 32 0d 0a 2d 38 38 0d  .-114..-12..-88.
30fe0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
30ff0 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 36 36 20  rt..SELECT + 66 
31000 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
31010 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d  BY tab0.col1..--
31020 2d 2d 0d 0a 36 36 0d 0a 36 36 0d 0a 0d 0a 71 75  --..66..66....qu
31030 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
31040 45 4c 45 43 54 20 30 20 41 53 20 63 6f 6c 32 20  ELECT 0 AS col2 
31050 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 47  FROM tab2 cor0 G
31060 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
31070 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30  2..----..0..0..0
31080 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
31090 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
310a0 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
310b0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
310c0 61 62 65 6c 2d 31 35 36 34 0d 0a 53 45 4c 45 43  abel-1564..SELEC
310d0 54 20 41 4c 4c 20 36 39 20 44 49 56 20 2d 20 63  T ALL 69 DIV - c
310e0 6f 72 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 31  or0.col2 AS col1
310f0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
31100 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
31110 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d  .col2..----..-1.
31120 0a 2d 32 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66  .-2..0....skipif
31130 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
31140 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
31150 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
31160 35 36 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  564..SELECT ALL 
31170 36 39 20 2f 20 2d 20 63 6f 72 30 2e 63 6f 6c 32  69 / - cor0.col2
31180 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
31190 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
311a0 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d   BY cor0.col2..-
311b0 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 32 0d 0a 30 0d 0a  ---..-1..-2..0..
311c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
311d0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 32 39  t..SELECT ALL 29
311e0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
311f0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31  r0 GROUP BY col1
31200 0d 0a 2d 2d 2d 2d 0d 0a 32 39 0d 0a 32 39 0d 0a  ..----..29..29..
31210 32 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  29....query I ro
31220 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
31230 31 34 20 2d 20 74 61 62 31 2e 63 6f 6c 30 20 46  14 - tab1.col0 F
31240 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
31250 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y tab1.col0..---
31260 2d 0d 0a 2d 33 36 0d 0a 2d 34 32 0d 0a 2d 39 36  -..-36..-42..-96
31270 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
31280 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
31290 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
312a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
312b0 61 62 65 6c 2d 31 35 36 37 0d 0a 53 45 4c 45 43  abel-1567..SELEC
312c0 54 20 44 49 53 54 49 4e 43 54 20 2d 20 74 61 62  T DISTINCT - tab
312d0 30 2e 63 6f 6c 30 20 44 49 56 20 2d 20 39 39 20  0.col0 DIV - 99 
312e0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
312f0 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
31300 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  col0..----..0...
31310 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
31320 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
31330 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
31340 6c 61 62 65 6c 2d 31 35 36 37 0d 0a 53 45 4c 45  label-1567..SELE
31350 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 74 61  CT DISTINCT - ta
31360 62 30 2e 63 6f 6c 30 20 2f 20 2d 20 39 39 20 41  b0.col0 / - 99 A
31370 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
31380 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
31390 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ol0..----..0....
313a0 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
313b0 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
313c0 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
313d0 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
313e0 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
313f0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
31400 20 2d 20 74 61 62 31 2e 63 6f 6c 32 20 63 6f 6c   - tab1.col2 col
31410 32 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  2 FROM tab1 GROU
31420 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a  P BY tab1.col2..
31430 2d 2d 2d 2d 0d 0a 2d 34 35 0d 0a 2d 37 31 0d 0a  ----..-45..-71..
31440 2d 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  -8....query I ro
31450 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
31460 74 61 62 32 2e 63 6f 6c 30 20 41 53 20 63 6f 6c  tab2.col0 AS col
31470 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  0 FROM tab2 GROU
31480 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 20 48  P BY tab2.col0 H
31490 41 56 49 4e 47 20 4e 4f 54 20 4e 55 4c 4c 20 49  AVING NOT NULL I
314a0 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
314b0 0d 0a 31 35 0d 0a 39 31 0d 0a 39 32 0d 0a 0d 0a  ..15..91..92....
314c0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
314d0 0a 53 45 4c 45 43 54 20 31 34 20 41 53 20 63 6f  .SELECT 14 AS co
314e0 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  l2 FROM tab2 cor
314f0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d  0 GROUP BY col1.
31500 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 31 34 0d 0a 31  .----..14..14..1
31510 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  4....query I row
31520 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 33  sort..SELECT + 3
31530 36 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  6 AS col1 FROM t
31540 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab0 GROUP BY tab
31550 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33 36  0.col2..----..36
31560 0d 0a 33 36 0d 0a 33 36 0d 0a 0d 0a 71 75 65 72  ..36..36....quer
31570 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
31580 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2d  ECT DISTINCT + -
31590 20 74 61 62 32 2e 63 6f 6c 30 20 2b 20 2b 20 32   tab2.col0 + + 2
315a0 39 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  9 AS col1 FROM t
315b0 61 62 32 20 47 52 4f 55 50 20 42 59 20 63 6f 6c  ab2 GROUP BY col
315c0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 32 0d 0a 2d 36  0..----..-62..-6
315d0 33 0d 0a 31 34 0d 0a 0d 0a 71 75 65 72 79 20 49  3..14....query I
315e0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
315f0 20 41 4c 4c 20 33 34 20 2a 20 36 31 20 46 52 4f   ALL 34 * 61 FRO
31600 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
31610 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 30 37 34  col0..----..2074
31620 0d 0a 32 30 37 34 0d 0a 32 30 37 34 0d 0a 0d 0a  ..2074..2074....
31630 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
31640 0a 53 45 4c 45 43 54 20 2d 20 28 20 74 61 62 32  .SELECT - ( tab2
31650 2e 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 31 20  .col2 ) AS col1 
31660 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
31670 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d  BY tab2.col2..--
31680 2d 2d 0d 0a 2d 35 38 0d 0a 2d 37 39 0d 0a 2d 38  --..-58..-79..-8
31690 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  7....onlyif mysq
316a0 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
316b0 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
316c0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
316d0 6c 61 62 65 6c 2d 31 35 37 35 0d 0a 53 45 4c 45  label-1575..SELE
316e0 43 54 20 4e 55 4c 4c 49 46 20 28 20 39 37 2c 20  CT NULLIF ( 97, 
316f0 63 6f 72 30 2e 63 6f 6c 32 20 2b 20 43 41 53 54  cor0.col2 + CAST
31700 28 20 2d 20 38 31 20 41 53 20 53 49 47 4e 45 44  ( - 81 AS SIGNED
31710 20 29 20 29 20 2a 20 2b 20 63 6f 6c 31 20 41 53   ) ) * + col1 AS
31720 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
31730 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
31740 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30   cor0.col1, cor0
31750 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a  .col2..----..0..
31760 30 0d 0a 37 38 35 37 0d 0a 0d 0a 73 6b 69 70 69  0..7857....skipi
31770 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
31780 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
31790 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
317a0 31 35 37 35 0d 0a 53 45 4c 45 43 54 20 4e 55 4c  1575..SELECT NUL
317b0 4c 49 46 20 28 20 39 37 2c 20 63 6f 72 30 2e 63  LIF ( 97, cor0.c
317c0 6f 6c 32 20 2b 20 43 41 53 54 20 28 20 2d 20 38  ol2 + CAST ( - 8
317d0 31 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 29  1 AS INTEGER ) )
317e0 20 2a 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c   * + col1 AS col
317f0 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  0 FROM tab0 AS c
31800 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
31810 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c  0.col1, cor0.col
31820 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 37  2..----..0..0..7
31830 38 35 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  857....query I r
31840 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
31850 20 33 31 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20   31 + cor0.col1 
31860 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
31870 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
31880 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 31 32 0d  col1..----..112.
31890 0a 33 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .31....query I r
318a0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
318b0 6f 6c 30 20 2a 20 38 20 41 53 20 63 6f 6c 30 20  ol0 * 8 AS col0 
318c0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
318d0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
318e0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 30 0d  col0..----..120.
318f0 0a 37 32 38 0d 0a 37 33 36 0d 0a 0d 0a 71 75 65  .728..736....que
31900 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
31910 4c 45 43 54 20 31 34 20 2b 20 31 38 20 46 52 4f  LECT 14 + 18 FRO
31920 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
31930 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab0.col0..----.
31940 0a 33 32 0d 0a 33 32 0d 0a 33 32 0d 0a 0d 0a 73  .32..32..32....s
31950 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
31960 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 68 61   # PostgreSQL ha
31970 73 20 73 74 72 69 63 74 20 63 6f 6c 75 6d 6e 20  s strict column 
31980 75 73 61 67 65 20 66 6f 72 20 47 52 4f 55 50 20  usage for GROUP 
31990 42 59 20 63 6c 61 75 73 65 73 0d 0a 71 75 65 72  BY clauses..quer
319a0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
319b0 45 43 54 20 43 4f 41 4c 45 53 43 45 20 28 20 32  ECT COALESCE ( 2
319c0 37 2c 20 74 61 62 30 2e 63 6f 6c 32 20 29 20 2a  7, tab0.col2 ) *
319d0 20 74 61 62 30 2e 63 6f 6c 30 20 46 52 4f 4d 20   tab0.col0 FROM 
319e0 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61  tab0 GROUP BY ta
319f0 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31  b0.col0..----..1
31a00 31 36 31 0d 0a 32 32 34 31 0d 0a 37 30 32 0d 0a  161..2241..702..
31a10 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
31a20 74 0d 0a 53 45 4c 45 43 54 20 37 33 20 41 53 20  t..SELECT 73 AS 
31a30 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
31a40 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
31a50 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  cor0.col2..----.
31a60 0a 37 33 0d 0a 37 33 0d 0a 37 33 0d 0a 0d 0a 6f  .73..73..73....o
31a70 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
31a80 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
31a90 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
31aa0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
31ab0 31 35 38 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1581..SELECT ALL
31ac0 20 2d 20 74 61 62 31 2e 63 6f 6c 31 20 44 49 56   - tab1.col1 DIV
31ad0 20 2b 20 74 61 62 31 2e 63 6f 6c 31 20 63 6f 6c   + tab1.col1 col
31ae0 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  0 FROM tab1 GROU
31af0 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a  P BY tab1.col1..
31b00 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31  ----..-1..-1..-1
31b10 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
31b20 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
31b30 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  e..skipif postgr
31b40 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
31b50 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
31b60 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
31b70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
31b80 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
31b90 6c 2d 31 35 38 31 0d 0a 53 45 4c 45 43 54 20 41  l-1581..SELECT A
31ba0 4c 4c 20 2d 20 74 61 62 31 2e 63 6f 6c 31 20 2f  LL - tab1.col1 /
31bb0 20 2b 20 74 61 62 31 2e 63 6f 6c 31 20 63 6f 6c   + tab1.col1 col
31bc0 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  0 FROM tab1 GROU
31bd0 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a  P BY tab1.col1..
31be0 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31  ----..-1..-1..-1
31bf0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
31c00 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 32 34  ort..SELECT + 24
31c10 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
31c20 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
31c30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 32 34 0d  .col1..----..24.
31c40 0a 32 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .24....query I r
31c50 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
31c60 4c 4c 20 2d 20 35 20 41 53 20 63 6f 6c 32 20 46  LL - 5 AS col2 F
31c70 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
31c80 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
31c90 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 0d 0a 2d  ol2..----..-5..-
31ca0 35 0d 0a 2d 35 0d 0a 0d 0a 71 75 65 72 79 20 49  5..-5....query I
31cb0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
31cc0 20 2b 20 31 39 20 46 52 4f 4d 20 74 61 62 31 20   + 19 FROM tab1 
31cd0 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
31ce0 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 39 0d 0a 31 39  l1..----..19..19
31cf0 0d 0a 31 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..19....onlyif m
31d00 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
31d10 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
31d20 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
31d30 72 74 20 6c 61 62 65 6c 2d 31 35 38 35 0d 0a 53  rt label-1585..S
31d40 45 4c 45 43 54 20 63 6f 6c 30 20 44 49 56 20 31  ELECT col0 DIV 1
31d50 34 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  4 AS col2 FROM t
31d60 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab0 AS cor0 GROU
31d70 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  P BY col0..----.
31d80 0a 31 0d 0a 33 0d 0a 35 0d 0a 0d 0a 73 6b 69 70  .1..3..5....skip
31d90 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
31da0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
31db0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
31dc0 2d 31 35 38 35 0d 0a 53 45 4c 45 43 54 20 63 6f  -1585..SELECT co
31dd0 6c 30 20 2f 20 31 34 20 41 53 20 63 6f 6c 32 20  l0 / 14 AS col2 
31de0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
31df0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 30 0d  0 GROUP BY col0.
31e00 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 33 0d 0a 35 0d 0a  .----..1..3..5..
31e10 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
31e20 74 0d 0a 53 45 4c 45 43 54 20 2d 20 74 61 62 32  t..SELECT - tab2
31e30 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20  .col0 FROM tab2 
31e40 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
31e50 6c 30 20 48 41 56 49 4e 47 20 4e 4f 54 20 4e 55  l0 HAVING NOT NU
31e60 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  LL IS NULL..----
31e70 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
31e80 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
31e90 74 61 62 31 2e 63 6f 6c 30 20 46 52 4f 4d 20 74  tab1.col0 FROM t
31ea0 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
31eb0 31 2e 63 6f 6c 30 20 48 41 56 49 4e 47 20 4e 55  1.col0 HAVING NU
31ec0 4c 4c 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 4e  LL NOT BETWEEN N
31ed0 55 4c 4c 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d  ULL AND NULL..--
31ee0 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
31ef0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
31f00 33 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  31 FROM tab1 AS 
31f10 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
31f20 74 61 62 31 20 41 53 20 63 6f 72 31 20 47 52 4f  tab1 AS cor1 GRO
31f30 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d  UP BY cor0.col0.
31f40 0a 2d 2d 2d 2d 0d 0a 33 31 0d 0a 33 31 0d 0a 33  .----..31..31..3
31f50 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
31f60 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
31f70 54 49 4e 43 54 20 2d 20 34 38 20 2a 20 2d 20 63  TINCT - 48 * - c
31f80 6f 72 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61  or0.col2 FROM ta
31f90 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b1 AS cor0 GROUP
31fa0 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d   BY cor0.col2..-
31fb0 2d 2d 2d 0d 0a 32 31 36 30 0d 0a 33 34 30 38 0d  ---..2160..3408.
31fc0 0a 33 38 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .384....query I 
31fd0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
31fe0 41 4c 4c 20 2d 20 2d 20 43 4f 41 4c 45 53 43 45  ALL - - COALESCE
31ff0 20 28 20 39 39 2c 20 31 31 20 29 20 41 53 20 63   ( 99, 11 ) AS c
32000 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52  ol0 FROM tab1 GR
32010 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31  OUP BY tab1.col1
32020 0d 0a 2d 2d 2d 2d 0d 0a 39 39 0d 0a 39 39 0d 0a  ..----..99..99..
32030 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  99....query I ro
32040 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
32050 53 54 49 4e 43 54 20 2d 20 63 6f 72 30 2e 63 6f  STINCT - cor0.co
32060 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l1 AS col1 FROM 
32070 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f  tab0 AS cor0 GRO
32080 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 2c  UP BY cor0.col1,
32090 20 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 31   col1, cor0.col1
320a0 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 31 0d 0a 30 0d 0a  ..----..-81..0..
320b0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
320c0 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 72 30  t..SELECT - cor0
320d0 2e 63 6f 6c 31 20 2b 20 35 31 20 41 53 20 63 6f  .col1 + 51 AS co
320e0 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
320f0 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
32100 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  r0.col1..----..-
32110 31 30 0d 0a 2d 38 0d 0a 31 30 0d 0a 0d 0a 71 75  10..-8..10....qu
32120 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
32130 45 4c 45 43 54 20 63 6f 6c 32 20 41 53 20 63 6f  ELECT col2 AS co
32140 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l1 FROM tab2 AS 
32150 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
32160 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f  r0.col1, cor0.co
32170 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 35 38 0d 0a 37 39  l2..----..58..79
32180 0d 0a 38 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..87....query I 
32190 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
321a0 44 49 53 54 49 4e 43 54 20 35 33 20 2a 20 2b 20  DISTINCT 53 * + 
321b0 38 33 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  83 FROM tab0 AS 
321c0 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
321d0 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 34  r0.col0..----..4
321e0 33 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  399....query I r
321f0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
32200 49 53 54 49 4e 43 54 20 37 36 20 46 52 4f 4d 20  ISTINCT 76 FROM 
32210 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f  tab1 AS cor0 GRO
32220 55 50 20 42 59 20 63 6f 6c 31 2c 20 63 6f 6c 32  UP BY col1, col2
32230 0d 0a 2d 2d 2d 2d 0d 0a 37 36 0d 0a 0d 0a 71 75  ..----..76....qu
32240 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
32250 45 4c 45 43 54 20 41 4c 4c 20 2b 20 36 20 2a 20  ELECT ALL + 6 * 
32260 74 61 62 32 2e 63 6f 6c 32 20 41 53 20 63 6f 6c  tab2.col2 AS col
32270 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  0 FROM tab2 GROU
32280 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a  P BY tab2.col2..
32290 2d 2d 2d 2d 0d 0a 33 34 38 0d 0a 34 37 34 0d 0a  ----..348..474..
322a0 35 32 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  522....skipif po
322b0 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
322c0 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
322d0 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
322e0 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
322f0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
32300 0a 53 45 4c 45 43 54 20 39 35 20 63 6f 6c 32 20  .SELECT 95 col2 
32310 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
32320 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
32330 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 39 35 0d 0a  col0..----..95..
32340 39 35 0d 0a 39 35 0d 0a 0d 0a 71 75 65 72 79 20  95..95....query 
32350 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
32360 54 20 63 6f 72 30 2e 63 6f 6c 30 20 2a 20 2d 20  T cor0.col0 * - 
32370 37 36 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  76 FROM tab2 AS 
32380 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
32390 72 30 2e 63 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f  r0.col0, cor0.co
323a0 6c 31 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  l1, col1..----..
323b0 2d 31 31 34 30 0d 0a 2d 36 39 31 36 0d 0a 2d 36  -1140..-6916..-6
323c0 39 39 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  992....onlyif my
323d0 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
323e0 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
323f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
32400 74 20 6c 61 62 65 6c 2d 31 35 39 39 0d 0a 53 45  t label-1599..SE
32410 4c 45 43 54 20 36 31 20 44 49 56 20 2d 20 34 20  LECT 61 DIV - 4 
32420 2b 20 63 6f 72 30 2e 63 6f 6c 30 20 46 52 4f 4d  + cor0.col0 FROM
32430 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52   tab0 AS cor0 GR
32440 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30  OUP BY cor0.col0
32450 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  , cor0.col2..---
32460 2d 0d 0a 31 31 0d 0a 32 38 0d 0a 36 38 0d 0a 0d  -..11..28..68...
32470 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
32480 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
32490 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
324a0 6c 61 62 65 6c 2d 31 35 39 39 0d 0a 53 45 4c 45  label-1599..SELE
324b0 43 54 20 36 31 20 2f 20 2d 20 34 20 2b 20 63 6f  CT 61 / - 4 + co
324c0 72 30 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  r0.col0 FROM tab
324d0 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  0 AS cor0 GROUP 
324e0 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f  BY cor0.col0, co
324f0 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31  r0.col2..----..1
32500 31 0d 0a 32 38 0d 0a 36 38 0d 0a 0d 0a 71 75 65  1..28..68....que
32510 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
32520 4c 45 43 54 20 31 37 20 46 52 4f 4d 20 74 61 62  LECT 17 FROM tab
32530 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
32540 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f  BY cor0.col0, co
32550 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31  r0.col1..----..1
32560 37 0d 0a 31 37 0d 0a 31 37 0d 0a 0d 0a 71 75 65  7..17..17....que
32570 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
32580 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
32590 63 6f 72 30 2e 63 6f 6c 31 20 2b 20 34 34 20 46  cor0.col1 + 44 F
325a0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
325b0 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32   CROSS JOIN tab2
325c0 20 41 53 20 63 6f 72 31 20 47 52 4f 55 50 20 42   AS cor1 GROUP B
325d0 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y cor0.col1..---
325e0 2d 0d 0a 2d 31 33 0d 0a 30 0d 0a 33 38 0d 0a 0d  -..-13..0..38...
325f0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
32600 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c  ..SELECT ALL col
32610 30 20 2a 20 2d 20 63 6f 72 30 2e 63 6f 6c 31 20  0 * - cor0.col1 
32620 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
32630 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
32640 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d  col1, cor0.col0.
32650 0a 2d 2d 2d 2d 0d 0a 2d 33 34 38 33 0d 0a 30 0d  .----..-3483..0.
32660 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  .0....query I ro
32670 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
32680 53 54 49 4e 43 54 20 2d 20 35 32 20 46 52 4f 4d  STINCT - 52 FROM
32690 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74   tab1 GROUP BY t
326a0 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab1.col0..----..
326b0 2d 35 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  -52....onlyif my
326c0 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
326d0 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
326e0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
326f0 74 20 6c 61 62 65 6c 2d 31 36 30 34 0d 0a 53 45  t label-1604..SE
32700 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
32710 2d 20 38 34 20 44 49 56 20 2b 20 74 61 62 32 2e  - 84 DIV + tab2.
32720 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 47  col0 FROM tab2 G
32730 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
32740 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 35 0d 0a 0d  0..----..0..5...
32750 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
32760 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
32770 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
32780 6c 61 62 65 6c 2d 31 36 30 34 0d 0a 53 45 4c 45  label-1604..SELE
32790 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20  CT DISTINCT - - 
327a0 38 34 20 2f 20 2b 20 74 61 62 32 2e 63 6f 6c 30  84 / + tab2.col0
327b0 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
327c0 20 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d   BY tab2.col0..-
327d0 2d 2d 2d 0d 0a 30 0d 0a 35 0d 0a 0d 0a 71 75 65  ---..0..5....que
327e0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
327f0 4c 45 43 54 20 2d 20 37 32 20 46 52 4f 4d 20 74  LECT - 72 FROM t
32800 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
32810 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a  P BY cor0.col2..
32820 2d 2d 2d 2d 0d 0a 2d 37 32 0d 0a 2d 37 32 0d 0a  ----..-72..-72..
32830 2d 37 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  -72....skipif po
32840 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
32850 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
32860 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
32870 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
32880 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
32890 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f  .SELECT ALL - co
328a0 72 30 2e 63 6f 6c 31 20 63 6f 6c 31 20 46 52 4f  r0.col1 col1 FRO
328b0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47  M tab0 AS cor0 G
328c0 52 4f 55 50 20 42 59 20 63 6f 6c 31 2c 20 63 6f  ROUP BY col1, co
328d0 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  r0.col1..----..-
328e0 38 31 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49  81..0....query I
328f0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
32900 20 41 4c 4c 20 2b 20 32 36 20 46 52 4f 4d 20 74   ALL + 26 FROM t
32910 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab0 AS cor0 GROU
32920 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a  P BY cor0.col1..
32930 2d 2d 2d 2d 0d 0a 32 36 0d 0a 32 36 0d 0a 0d 0a  ----..26..26....
32940 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
32950 0a 53 45 4c 45 43 54 20 2b 20 35 35 20 46 52 4f  .SELECT + 55 FRO
32960 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
32970 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
32980 32 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 35  2, col1..----..5
32990 35 0d 0a 35 35 0d 0a 35 35 0d 0a 0d 0a 71 75 65  5..55..55....que
329a0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
329b0 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 32 20  LECT ALL + col2 
329c0 2a 20 2d 20 34 35 20 41 53 20 63 6f 6c 31 20 46  * - 45 AS col1 F
329d0 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42  ROM tab2 GROUP B
329e0 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  Y col2..----..-2
329f0 36 31 30 0d 0a 2d 33 35 35 35 0d 0a 2d 33 39 31  610..-3555..-391
32a00 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
32a10 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
32a20 20 2b 20 35 38 20 41 53 20 63 6f 6c 31 20 46 52   + 58 AS col1 FR
32a30 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
32a40 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
32a50 6c 30 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  l0, col1..----..
32a60 35 38 0d 0a 35 38 0d 0a 35 38 0d 0a 0d 0a 71 75  58..58..58....qu
32a70 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
32a80 45 4c 45 43 54 20 2d 20 63 6f 6c 30 20 2d 20 38  ELECT - col0 - 8
32a90 33 20 2a 20 2d 20 38 30 20 41 53 20 63 6f 6c 30  3 * - 80 AS col0
32aa0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
32ab0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
32ac0 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 36 35 34  .col0..----..654
32ad0 38 0d 0a 36 35 34 39 0d 0a 36 36 32 35 0d 0a 0d  8..6549..6625...
32ae0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
32af0 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 32 37 20  ..SELECT + + 27 
32b00 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20  FROM tab0 GROUP 
32b10 42 59 20 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d  BY tab0.col0..--
32b20 2d 2d 0d 0a 32 37 0d 0a 32 37 0d 0a 32 37 0d 0a  --..27..27..27..
32b30 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
32b40 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
32b50 38 39 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  89 AS col1 FROM 
32b60 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61  tab1 GROUP BY ta
32b70 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  b1.col1..----..-
32b80 38 39 0d 0a 2d 38 39 0d 0a 2d 38 39 0d 0a 0d 0a  89..-89..-89....
32b90 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
32ba0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
32bb0 20 2d 20 32 30 20 2a 20 2d 20 35 35 20 46 52 4f   - 20 * - 55 FRO
32bc0 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
32bd0 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab0.col1..----.
32be0 0a 31 31 30 30 0d 0a 0d 0a 71 75 65 72 79 20 49  .1100....query I
32bf0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
32c00 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 46   DISTINCT col2 F
32c10 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 47 52  ROM tab2 cor0 GR
32c20 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32  OUP BY cor0.col2
32c30 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  , cor0.col2..---
32c40 2d 0d 0a 35 38 0d 0a 37 39 0d 0a 38 37 0d 0a 0d  -..58..79..87...
32c50 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
32c60 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
32c70 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
32c80 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
32c90 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
32ca0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
32cb0 54 20 63 6f 72 30 2e 63 6f 6c 30 20 63 6f 6c 32  T cor0.col0 col2
32cc0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
32cd0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
32ce0 2e 63 6f 6c 30 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d  .col0, col1..---
32cf0 2d 0d 0a 32 32 0d 0a 32 38 0d 0a 38 32 0d 0a 0d  -..22..28..82...
32d00 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
32d10 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c  ..SELECT ALL col
32d20 32 20 2a 20 74 61 62 32 2e 63 6f 6c 32 20 41 53  2 * tab2.col2 AS
32d30 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
32d40 47 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d  GROUP BY col2..-
32d50 2d 2d 2d 0d 0a 33 33 36 34 0d 0a 36 32 34 31 0d  ---..3364..6241.
32d60 0a 37 35 36 39 0d 0a 0d 0a 71 75 65 72 79 20 49  .7569....query I
32d70 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
32d80 20 2d 20 37 32 20 46 52 4f 4d 20 74 61 62 31 20   - 72 FROM tab1 
32d90 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
32da0 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   cor0.col1..----
32db0 0d 0a 2d 37 32 0d 0a 2d 37 32 0d 0a 2d 37 32 0d  ..-72..-72..-72.
32dc0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
32dd0 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 32 20 46  rt..SELECT + 2 F
32de0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
32df0 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
32e00 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 32 0d 0a 32 0d  ol1..----..2..2.
32e10 0a 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  .2....query I ro
32e20 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
32e30 53 54 49 4e 43 54 20 34 31 20 41 53 20 63 6f 6c  STINCT 41 AS col
32e40 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  0 FROM tab1 GROU
32e50 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a  P BY tab1.col2..
32e60 2d 2d 2d 2d 0d 0a 34 31 0d 0a 0d 0a 71 75 65 72  ----..41....quer
32e70 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
32e80 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 37  ECT DISTINCT - 7
32e90 33 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55  3 FROM tab0 GROU
32ea0 50 20 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  P BY col1..----.
32eb0 0a 2d 37 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-73....query I 
32ec0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
32ed0 35 38 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  58 FROM tab1 AS 
32ee0 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
32ef0 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 35  r0.col1..----..5
32f00 38 0d 0a 35 38 0d 0a 35 38 0d 0a 0d 0a 6f 6e 6c  8..58..58....onl
32f10 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
32f20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
32f30 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
32f40 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 36  rowsort label-16
32f50 32 33 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 72  23..SELECT + cor
32f60 30 2e 63 6f 6c 31 20 44 49 56 20 2b 20 28 20 37  0.col1 DIV + ( 7
32f70 20 2a 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 29   * + cor0.col1 )
32f80 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
32f90 62 31 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  b1 cor0 GROUP BY
32fa0 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30   cor0.col1, cor0
32fb0 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a  .col0..----..0..
32fc0 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  0..0....skipif m
32fd0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
32fe0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
32ff0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 36 32  owsort label-162
33000 33 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 72 30  3..SELECT + cor0
33010 2e 63 6f 6c 31 20 2f 20 2b 20 28 20 37 20 2a 20  .col1 / + ( 7 * 
33020 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 29 20 41 53  + cor0.col1 ) AS
33030 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
33040 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
33050 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f  r0.col1, cor0.co
33060 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a  l0..----..0..0..
33070 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
33080 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
33090 54 49 4e 43 54 20 2d 20 37 39 20 2a 20 63 6f 72  TINCT - 79 * cor
330a0 30 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  0.col0 FROM tab1
330b0 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
330c0 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y cor0.col0..---
330d0 2d 0d 0a 2d 31 37 33 38 0d 0a 2d 32 32 31 32 0d  -..-1738..-2212.
330e0 0a 2d 36 34 37 38 0d 0a 0d 0a 71 75 65 72 79 20  .-6478....query 
330f0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
33100 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20  T DISTINCT col2 
33110 2b 20 2d 20 38 35 20 41 53 20 63 6f 6c 30 20 46  + - 85 AS col0 F
33120 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
33130 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
33140 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37 0d 0a  ol2..----..-27..
33150 2d 36 0d 0a 32 0d 0a 0d 0a 71 75 65 72 79 20 49  -6..2....query I
33160 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
33170 20 41 4c 4c 20 38 39 20 2a 20 2d 20 34 30 20 46   ALL 89 * - 40 F
33180 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
33190 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
331a0 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 35 36 30  ol0..----..-3560
331b0 0d 0a 2d 33 35 36 30 0d 0a 2d 33 35 36 30 0d 0a  ..-3560..-3560..
331c0 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
331d0 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
331e0 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
331f0 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
33200 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
33210 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
33220 43 54 20 63 6f 6c 32 20 63 6f 6c 32 20 46 52 4f  CT col2 col2 FRO
33230 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
33240 74 61 62 30 2e 63 6f 6c 32 20 48 41 56 49 4e 47  tab0.col2 HAVING
33250 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d   NULL IS NULL..-
33260 2d 2d 2d 0d 0a 32 34 0d 0a 33 38 0d 0a 37 39 0d  ---..24..38..79.
33270 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
33280 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
33290 4e 43 54 20 2d 20 74 61 62 31 2e 63 6f 6c 32 20  NCT - tab1.col2 
332a0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
332b0 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
332c0 63 6f 6c 32 20 48 41 56 49 4e 47 20 4e 4f 54 20  col2 HAVING NOT 
332d0 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  NULL IS NOT NULL
332e0 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 35 0d 0a 2d 37 31  ..----..-45..-71
332f0 0d 0a 2d 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  ..-8....skipif p
33300 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
33310 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
33320 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
33330 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
33340 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
33350 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
33360 54 20 2d 20 39 37 20 63 6f 6c 32 20 46 52 4f 4d  T - 97 col2 FROM
33370 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52   tab1 AS cor0 GR
33380 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32  OUP BY cor0.col2
33390 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 37 0d 0a 0d 0a 71  ..----..-97....q
333a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
333b0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
333c0 2b 20 39 39 20 41 53 20 63 6f 6c 32 20 46 52 4f  + 99 AS col2 FRO
333d0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47  M tab2 AS cor0 G
333e0 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
333f0 32 0d 0a 2d 2d 2d 2d 0d 0a 39 39 0d 0a 0d 0a 71  2..----..99....q
33400 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
33410 53 45 4c 45 43 54 20 2d 20 74 61 62 30 2e 63 6f  SELECT - tab0.co
33420 6c 31 20 2a 20 74 61 62 30 2e 63 6f 6c 31 20 41  l1 * tab0.col1 A
33430 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
33440 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63   GROUP BY tab0.c
33450 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 35 36 31  ol1..----..-6561
33460 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..0....query I r
33470 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
33480 20 63 6f 72 30 2e 63 6f 6c 30 20 2a 20 36 39 20   cor0.col0 * 69 
33490 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
334a0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
334b0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 37 39 34  col0..----..1794
334c0 0d 0a 32 39 36 37 0d 0a 35 37 32 37 0d 0a 0d 0a  ..2967..5727....
334d0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
334e0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 39 36 20 41  .SELECT ALL 96 A
334f0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
33500 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
33510 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 39 36 0d 0a 39  ol0..----..96..9
33520 36 0d 0a 39 36 0d 0a 0d 0a 71 75 65 72 79 20 49  6..96....query I
33530 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
33540 20 44 49 53 54 49 4e 43 54 20 2d 20 39 34 20 46   DISTINCT - 94 F
33550 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42  ROM tab2 GROUP B
33560 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 39  Y col1..----..-9
33570 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  4....query I row
33580 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
33590 54 49 4e 43 54 20 2b 20 38 30 20 46 52 4f 4d 20  TINCT + 80 FROM 
335a0 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f  tab0 AS cor0 GRO
335b0 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 2c  UP BY cor0.col2,
335c0 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   cor0.col0..----
335d0 0d 0a 38 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..80....query I 
335e0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
335f0 44 49 53 54 49 4e 43 54 20 36 33 20 41 53 20 63  DISTINCT 63 AS c
33600 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
33610 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
33620 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  or0.col1..----..
33630 36 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  63....query I ro
33640 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
33650 72 30 2e 63 6f 6c 30 20 2b 20 63 6f 6c 30 20 46  r0.col0 + col0 F
33660 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
33670 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
33680 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a  ol1, cor0.col0..
33690 2d 2d 2d 2d 0d 0a 31 36 34 0d 0a 34 34 0d 0a 35  ----..164..44..5
336a0 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
336b0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
336c0 20 37 39 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   79 AS col0 FROM
336d0 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52   tab0 AS cor0 GR
336e0 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32  OUP BY cor0.col2
336f0 0d 0a 2d 2d 2d 2d 0d 0a 37 39 0d 0a 37 39 0d 0a  ..----..79..79..
33700 37 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  79....query I ro
33710 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
33720 72 30 2e 63 6f 6c 32 20 2b 20 2d 20 63 6f 72 30  r0.col2 + - cor0
33730 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20  .col2 FROM tab0 
33740 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
33750 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f 6c 30   cor0.col0, col0
33760 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  , cor0.col2..---
33770 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75  -..0..0..0....qu
33780 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
33790 45 4c 45 43 54 20 2d 20 74 61 62 32 2e 63 6f 6c  ELECT - tab2.col
337a0 30 20 2b 20 2d 20 74 61 62 32 2e 63 6f 6c 30 20  0 + - tab2.col0 
337b0 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
337c0 42 59 20 74 61 62 32 2e 63 6f 6c 30 0d 0a 2d 2d  BY tab2.col0..--
337d0 2d 2d 0d 0a 2d 31 38 32 0d 0a 2d 31 38 34 0d 0a  --..-182..-184..
337e0 2d 33 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -30....query I r
337f0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
33800 20 31 34 20 2a 20 36 34 20 46 52 4f 4d 20 74 61   14 * 64 FROM ta
33810 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
33820 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d   BY cor0.col1..-
33830 2d 2d 2d 0d 0a 2d 38 39 36 0d 0a 2d 38 39 36 0d  ---..-896..-896.
33840 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
33850 72 74 0d 0a 53 45 4c 45 43 54 20 35 32 20 2a 20  rt..SELECT 52 * 
33860 2d 20 63 6f 72 30 2e 63 6f 6c 31 20 46 52 4f 4d  - cor0.col1 FROM
33870 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52   tab1 AS cor0 GR
33880 4f 55 50 20 42 59 20 63 6f 6c 31 2c 20 63 6f 6c  OUP BY col1, col
33890 30 2c 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  0, col2..----..-
338a0 32 32 38 38 0d 0a 2d 32 39 36 34 0d 0a 2d 33 31  2288..-2964..-31
338b0 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
338c0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
338d0 54 49 4e 43 54 20 2d 20 63 6f 72 31 2e 63 6f 6c  TINCT - cor1.col
338e0 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  0 FROM tab1 AS c
338f0 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
33900 61 62 31 20 41 53 20 63 6f 72 31 20 47 52 4f 55  ab1 AS cor1 GROU
33910 50 20 42 59 20 63 6f 72 31 2e 63 6f 6c 30 0d 0a  P BY cor1.col0..
33920 2d 2d 2d 2d 0d 0a 2d 32 32 0d 0a 2d 32 38 0d 0a  ----..-22..-28..
33930 2d 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -82....query I r
33940 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
33950 49 53 54 49 4e 43 54 20 38 33 20 46 52 4f 4d 20  ISTINCT 83 FROM 
33960 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61  tab2 GROUP BY ta
33970 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 38  b2.col0..----..8
33980 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
33990 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 31  sort..SELECT + 1
339a0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
339b0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
339c0 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a  .col1..----..1..
339d0 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
339e0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  sort..SELECT col
339f0 30 20 2b 20 39 38 20 41 53 20 63 6f 6c 32 20 46  0 + 98 AS col2 F
33a00 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20 47 52  ROM tab0 cor0 GR
33a10 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30  OUP BY cor0.col0
33a20 0d 0a 2d 2d 2d 2d 0d 0a 31 32 34 0d 0a 31 34 31  ..----..124..141
33a30 0d 0a 31 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49  ..181....query I
33a40 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
33a50 20 41 4c 4c 20 32 38 20 46 52 4f 4d 20 74 61 62   ALL 28 FROM tab
33a60 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e  0 GROUP BY tab0.
33a70 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 38 0d 0a  col0..----..28..
33a80 32 38 0d 0a 32 38 0d 0a 0d 0a 73 6b 69 70 69 66  28..28....skipif
33a90 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
33aa0 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
33ab0 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
33ac0 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
33ad0 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
33ae0 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  rt..SELECT ALL +
33af0 20 74 61 62 30 2e 63 6f 6c 32 20 2a 20 2b 20 63   tab0.col2 * + c
33b00 6f 6c 32 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  ol2 col2 FROM ta
33b10 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62 30  b0 GROUP BY tab0
33b20 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 34 34  .col2..----..144
33b30 34 0d 0a 35 37 36 0d 0a 36 32 34 31 0d 0a 0d 0a  4..576..6241....
33b40 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
33b50 0a 53 45 4c 45 43 54 20 2d 20 63 6f 72 30 2e 63  .SELECT - cor0.c
33b60 6f 6c 32 20 2b 20 37 34 20 41 53 20 63 6f 6c 30  ol2 + 74 AS col0
33b70 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
33b80 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
33b90 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33  .col2..----..-13
33ba0 0d 0a 2d 35 0d 0a 31 36 0d 0a 0d 0a 73 6b 69 70  ..-5..16....skip
33bb0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
33bc0 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
33bd0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
33be0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
33bf0 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
33c00 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
33c10 20 2b 20 74 61 62 32 2e 63 6f 6c 32 20 2a 20 2b   + tab2.col2 * +
33c20 20 74 61 62 32 2e 63 6f 6c 32 20 63 6f 6c 32 20   tab2.col2 col2 
33c30 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
33c40 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d  BY tab2.col2..--
33c50 2d 2d 0d 0a 33 33 36 34 0d 0a 36 32 34 31 0d 0a  --..3364..6241..
33c60 37 35 36 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  7569....skipif p
33c70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
33c80 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
33c90 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
33ca0 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
33cb0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
33cc0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
33cd0 54 20 2d 20 74 61 62 31 2e 63 6f 6c 31 20 2a 20  T - tab1.col1 * 
33ce0 74 61 62 31 2e 63 6f 6c 31 20 63 6f 6c 31 20 46  tab1.col1 col1 F
33cf0 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
33d00 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y tab1.col1..---
33d10 2d 0d 0a 2d 31 39 33 36 0d 0a 2d 33 32 34 39 0d  -..-1936..-3249.
33d20 0a 2d 33 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-36....query I 
33d30 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
33d40 2d 20 34 35 20 2a 20 63 6f 72 30 2e 63 6f 6c 30  - 45 * cor0.col0
33d50 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
33d60 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 30  r0 GROUP BY col0
33d70 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  , cor0.col0..---
33d80 2d 0d 0a 2d 31 32 36 30 0d 0a 2d 33 36 39 30 0d  -..-1260..-3690.
33d90 0a 2d 39 39 30 0d 0a 0d 0a 71 75 65 72 79 20 49  .-990....query I
33da0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
33db0 20 44 49 53 54 49 4e 43 54 20 2d 20 37 39 20 41   DISTINCT - 79 A
33dc0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
33dd0 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
33de0 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 39 0d 0a  ol1..----..-79..
33df0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
33e00 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
33e10 43 54 20 31 37 20 41 53 20 63 6f 6c 32 20 46 52  CT 17 AS col2 FR
33e20 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
33e30 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   tab1.col1..----
33e40 0d 0a 31 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..17....query I 
33e50 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
33e60 41 4c 4c 20 63 6f 72 30 2e 63 6f 6c 30 20 2d 20  ALL cor0.col0 - 
33e70 2b 20 63 6f 72 30 2e 63 6f 6c 30 20 46 52 4f 4d  + cor0.col0 FROM
33e80 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52   tab0 AS cor0 GR
33e90 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30  OUP BY cor0.col0
33ea0 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d  ..----..0..0..0.
33eb0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
33ec0 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 33 39 20  rt..SELECT - 39 
33ed0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
33ee0 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  0 AS cor0 GROUP 
33ef0 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  BY cor0.col0..--
33f00 2d 2d 0d 0a 2d 33 39 0d 0a 2d 33 39 0d 0a 2d 33  --..-39..-39..-3
33f10 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
33f20 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
33f30 54 49 4e 43 54 20 2b 20 2d 20 38 35 20 2a 20 2b  TINCT + - 85 * +
33f40 20 39 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   91 AS col0 FROM
33f50 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74   tab1 GROUP BY t
33f60 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  ab1.col1..----..
33f70 2d 37 37 33 35 0d 0a 0d 0a 71 75 65 72 79 20 49  -7735....query I
33f80 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
33f90 20 2d 20 2d 20 37 31 20 46 52 4f 4d 20 74 61 62   - - 71 FROM tab
33fa0 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
33fb0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 37 31 0d 0a  col0..----..71..
33fc0 37 31 0d 0a 37 31 0d 0a 0d 0a 71 75 65 72 79 20  71..71....query 
33fd0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
33fe0 54 20 44 49 53 54 49 4e 43 54 20 2b 20 34 20 2a  T DISTINCT + 4 *
33ff0 20 2d 20 63 6f 72 30 2e 63 6f 6c 32 20 2b 20 37   - cor0.col2 + 7
34000 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
34010 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
34020 2e 63 6f 6c 30 2c 20 63 6f 6c 32 0d 0a 2d 2d 2d  .col0, col2..---
34030 2d 0d 0a 2d 31 34 35 0d 0a 2d 33 30 39 0d 0a 2d  -..-145..-309..-
34040 38 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  89....query I ro
34050 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 74 61  wsort..SELECT ta
34060 62 32 2e 63 6f 6c 32 20 2d 20 2d 20 32 37 20 41  b2.col2 - - 27 A
34070 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
34080 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63   GROUP BY tab2.c
34090 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 30 36 0d 0a  ol2..----..106..
340a0 31 31 34 0d 0a 38 35 0d 0a 0d 0a 71 75 65 72 79  114..85....query
340b0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
340c0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 28 20  CT DISTINCT - ( 
340d0 2b 20 63 6f 72 30 2e 63 6f 6c 32 20 29 20 2a 20  + cor0.col2 ) * 
340e0 33 38 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  38 AS col1 FROM 
340f0 74 61 62 31 20 63 6f 72 30 20 47 52 4f 55 50 20  tab1 cor0 GROUP 
34100 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d  BY cor0.col2..--
34110 2d 2d 0d 0a 2d 31 37 31 30 0d 0a 2d 32 36 39 38  --..-1710..-2698
34120 0d 0a 2d 33 30 34 0d 0a 0d 0a 71 75 65 72 79 20  ..-304....query 
34130 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
34140 54 20 31 33 20 46 52 4f 4d 20 74 61 62 32 20 47  T 13 FROM tab2 G
34150 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c  ROUP BY tab2.col
34160 31 0d 0a 2d 2d 2d 2d 0d 0a 31 33 0d 0a 31 33 0d  1..----..13..13.
34170 0a 31 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .13....query I r
34180 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
34190 4c 4c 20 2b 20 34 30 20 46 52 4f 4d 20 74 61 62  LL + 40 FROM tab
341a0 31 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 30 0d  1 GROUP BY col0.
341b0 0a 2d 2d 2d 2d 0d 0a 34 30 0d 0a 34 30 0d 0a 34  .----..40..40..4
341c0 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
341d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63  sort..SELECT - c
341e0 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol2 AS col1 FROM
341f0 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
34200 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  ab0.col2..----..
34210 2d 32 34 0d 0a 2d 33 38 0d 0a 2d 37 39 0d 0a 0d  -24..-38..-79...
34220 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
34230 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
34240 54 20 2b 20 38 31 20 41 53 20 63 6f 6c 32 20 46  T + 81 AS col2 F
34250 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
34260 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32   CROSS JOIN tab2
34270 20 41 53 20 63 6f 72 31 20 47 52 4f 55 50 20 42   AS cor1 GROUP B
34280 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72  Y cor0.col1, cor
34290 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 38 31  1.col1..----..81
342a0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
342b0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 33 33 20 2b  ort..SELECT 33 +
342c0 20 2d 20 35 32 20 46 52 4f 4d 20 74 61 62 31 20   - 52 FROM tab1 
342d0 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a 2d  GROUP BY col1..-
342e0 2d 2d 2d 0d 0a 2d 31 39 0d 0a 2d 31 39 0d 0a 2d  ---..-19..-19..-
342f0 31 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  19....query I ro
34300 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
34310 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f  col0 AS col2 FRO
34320 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47  M tab1 AS cor0 G
34330 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
34340 30 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d  0, cor0.col0..--
34350 2d 2d 0d 0a 32 32 0d 0a 32 38 0d 0a 38 32 0d 0a  --..22..28..82..
34360 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
34370 74 0d 0a 53 45 4c 45 43 54 20 36 30 20 41 53 20  t..SELECT 60 AS 
34380 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47  col2 FROM tab1 G
34390 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
343a0 32 0d 0a 2d 2d 2d 2d 0d 0a 36 30 0d 0a 36 30 0d  2..----..60..60.
343b0 0a 36 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .60....query I r
343c0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
343d0 20 63 6f 72 30 2e 63 6f 6c 30 20 2a 20 2d 20 34   cor0.col0 * - 4
343e0 38 20 2b 20 2d 20 63 6f 72 30 2e 63 6f 6c 30 20  8 + - cor0.col0 
343f0 2a 20 63 6f 72 30 2e 63 6f 6c 30 20 46 52 4f 4d  * cor0.col0 FROM
34400 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 47 52   tab1 AS cor0 GR
34410 4f 55 50 20 42 59 20 63 6f 6c 31 2c 20 63 6f 72  OUP BY col1, cor
34420 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  0.col0..----..-1
34430 30 36 36 30 0d 0a 2d 31 35 34 30 0d 0a 2d 32 31  0660..-1540..-21
34440 32 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  28....query I ro
34450 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
34460 39 36 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  96 FROM tab0 AS 
34470 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
34480 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  r0.col2..----..-
34490 39 36 0d 0a 2d 39 36 0d 0a 2d 39 36 0d 0a 0d 0a  96..-96..-96....
344a0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
344b0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 28 20  .SELECT ALL - ( 
344c0 34 30 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f  40 ) AS col0 FRO
344d0 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
344e0 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  tab2.col1..----.
344f0 0a 2d 34 30 0d 0a 2d 34 30 0d 0a 2d 34 30 0d 0a  .-40..-40..-40..
34500 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
34510 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
34520 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
34530 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
34540 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
34550 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
34560 43 54 20 2b 20 2d 20 33 30 20 2a 20 2d 20 74 61  CT + - 30 * - ta
34570 62 32 2e 63 6f 6c 32 20 63 6f 6c 32 20 46 52 4f  b2.col2 col2 FRO
34580 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
34590 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 37 34 30  col2..----..1740
345a0 0d 0a 32 33 37 30 0d 0a 32 36 31 30 0d 0a 0d 0a  ..2370..2610....
345b0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
345c0 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c  .SELECT cor0.col
345d0 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  1 AS col1 FROM t
345e0 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab0 AS cor0 GROU
345f0 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20  P BY cor0.col1, 
34600 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  cor0.col1..----.
34610 0a 30 0d 0a 38 31 0d 0a 0d 0a 71 75 65 72 79 20  .0..81....query 
34620 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
34630 54 20 41 4c 4c 20 74 61 62 32 2e 63 6f 6c 32 20  T ALL tab2.col2 
34640 2b 20 2b 20 74 61 62 32 2e 63 6f 6c 32 20 2a 20  + + tab2.col2 * 
34650 2b 20 74 61 62 32 2e 63 6f 6c 32 20 41 53 20 63  + tab2.col2 AS c
34660 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 47 52  ol2 FROM tab2 GR
34670 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 32  OUP BY tab2.col2
34680 0d 0a 2d 2d 2d 2d 0d 0a 33 34 32 32 0d 0a 36 33  ..----..3422..63
34690 32 30 0d 0a 37 36 35 36 0d 0a 0d 0a 71 75 65 72  20..7656....quer
346a0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
346b0 45 43 54 20 41 4c 4c 20 2d 20 35 32 20 46 52 4f  ECT ALL - 52 FRO
346c0 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
346d0 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  tab0.col2..----.
346e0 0a 2d 35 32 0d 0a 2d 35 32 0d 0a 2d 35 32 0d 0a  .-52..-52..-52..
346f0 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
34700 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
34710 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
34720 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
34730 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
34740 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
34750 43 54 20 74 61 62 30 2e 63 6f 6c 31 20 63 6f 6c  CT tab0.col1 col
34760 30 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55  0 FROM tab0 GROU
34770 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 31 20 48  P BY tab0.col1 H
34780 41 56 49 4e 47 20 4e 4f 54 20 4e 55 4c 4c 20 49  AVING NOT NULL I
34790 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
347a0 0d 0a 30 0d 0a 38 31 0d 0a 0d 0a 73 6b 69 70 69  ..0..81....skipi
347b0 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
347c0 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
347d0 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
347e0 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
347f0 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
34800 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 74 61  ort..SELECT - ta
34810 62 31 2e 63 6f 6c 32 20 63 6f 6c 30 20 46 52 4f  b1.col2 col0 FRO
34820 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
34830 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  tab1.col2..----.
34840 0a 2d 34 35 0d 0a 2d 37 31 0d 0a 2d 38 0d 0a 0d  .-45..-71..-8...
34850 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
34860 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
34870 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
34880 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
34890 6c 2d 31 36 37 38 0d 0a 53 45 4c 45 43 54 20 43  l-1678..SELECT C
348a0 41 53 54 28 20 31 37 20 41 53 20 53 49 47 4e 45  AST( 17 AS SIGNE
348b0 44 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  D ) col2 FROM ta
348c0 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
348d0 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d   BY cor0.col2..-
348e0 2d 2d 2d 0d 0a 31 37 0d 0a 31 37 0d 0a 31 37 0d  ---..17..17..17.
348f0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
34900 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
34910 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
34920 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
34930 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
34940 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
34950 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
34960 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
34970 2d 31 36 37 38 0d 0a 53 45 4c 45 43 54 20 43 41  -1678..SELECT CA
34980 53 54 20 28 20 31 37 20 41 53 20 49 4e 54 45 47  ST ( 17 AS INTEG
34990 45 52 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ER ) col2 FROM t
349a0 61 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab0 AS cor0 GROU
349b0 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a  P BY cor0.col2..
349c0 2d 2d 2d 2d 0d 0a 31 37 0d 0a 31 37 0d 0a 31 37  ----..17..17..17
349d0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
349e0 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
349f0 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
34a00 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
34a10 61 62 65 6c 2d 31 36 37 39 0d 0a 53 45 4c 45 43  abel-1679..SELEC
34a20 54 20 2b 20 2d 20 74 61 62 31 2e 63 6f 6c 30 20  T + - tab1.col0 
34a30 44 49 56 20 74 61 62 31 2e 63 6f 6c 30 20 41 53  DIV tab1.col0 AS
34a40 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
34a50 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f  GROUP BY tab1.co
34a60 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31  l0..----..-1..-1
34a70 0d 0a 2d 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..-1....skipif m
34a80 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
34a90 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
34aa0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 36 37  owsort label-167
34ab0 39 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 74 61  9..SELECT + - ta
34ac0 62 31 2e 63 6f 6c 30 20 2f 20 74 61 62 31 2e 63  b1.col0 / tab1.c
34ad0 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol0 AS col1 FROM
34ae0 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74   tab1 GROUP BY t
34af0 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab1.col0..----..
34b00 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a 71 75  -1..-1..-1....qu
34b10 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
34b20 45 4c 45 43 54 20 2b 20 2d 20 33 20 2b 20 36 30  ELECT + - 3 + 60
34b30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
34b40 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31  b1 GROUP BY tab1
34b50 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 35 37 0d  .col0..----..57.
34b60 0a 35 37 0d 0a 35 37 0d 0a 0d 0a 6f 6e 6c 79 69  .57..57....onlyi
34b70 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
34b80 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
34b90 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
34ba0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 36 38 31  wsort label-1681
34bb0 0d 0a 53 45 4c 45 43 54 20 74 61 62 32 2e 63 6f  ..SELECT tab2.co
34bc0 6c 32 20 44 49 56 20 2b 20 39 37 20 41 53 20 63  l2 DIV + 97 AS c
34bd0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52  ol0 FROM tab2 GR
34be0 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 32  OUP BY tab2.col2
34bf0 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d  ..----..0..0..0.
34c00 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
34c10 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
34c20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
34c30 74 20 6c 61 62 65 6c 2d 31 36 38 31 0d 0a 53 45  t label-1681..SE
34c40 4c 45 43 54 20 74 61 62 32 2e 63 6f 6c 32 20 2f  LECT tab2.col2 /
34c50 20 2b 20 39 37 20 41 53 20 63 6f 6c 30 20 46 52   + 97 AS col0 FR
34c60 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59  OM tab2 GROUP BY
34c70 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d   tab2.col2..----
34c80 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65  ..0..0..0....que
34c90 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
34ca0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
34cb0 2b 20 32 32 20 41 53 20 63 6f 6c 30 20 46 52 4f  + 22 AS col0 FRO
34cc0 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
34cd0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 0d  col0..----..-22.
34ce0 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
34cf0 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
34d00 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
34d10 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
34d20 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
34d30 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
34d40 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63  ECT DISTINCT + c
34d50 6f 6c 31 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  ol1 col2 FROM ta
34d60 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b2 AS cor0 GROUP
34d70 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d   BY cor0.col1..-
34d80 2d 2d 2d 0d 0a 34 31 0d 0a 35 39 0d 0a 36 31 0d  ---..41..59..61.
34d90 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
34da0 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
34db0 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
34dc0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
34dd0 62 65 6c 2d 31 36 38 34 0d 0a 53 45 4c 45 43 54  bel-1684..SELECT
34de0 20 44 49 53 54 49 4e 43 54 20 31 38 20 44 49 56   DISTINCT 18 DIV
34df0 20 32 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   21 AS col0 FROM
34e00 20 74 61 62 32 20 63 6f 72 30 20 47 52 4f 55 50   tab2 cor0 GROUP
34e10 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a   BY col2..----..
34e20 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
34e30 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
34e40 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
34e50 6f 72 74 20 6c 61 62 65 6c 2d 31 36 38 34 0d 0a  ort label-1684..
34e60 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
34e70 31 38 20 2f 20 32 31 20 41 53 20 63 6f 6c 30 20  18 / 21 AS col0 
34e80 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 47  FROM tab2 cor0 G
34e90 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d  ROUP BY col2..--
34ea0 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..0....skipif 
34eb0 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
34ec0 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
34ed0 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
34ee0 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
34ef0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
34f00 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 35 31  t..SELECT + - 51
34f10 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
34f20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
34f30 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 2d  l0..----..-51..-
34f40 35 31 0d 0a 2d 35 31 0d 0a 0d 0a 6f 6e 6c 79 69  51..-51....onlyi
34f50 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
34f60 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
34f70 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
34f80 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 36 38 36  wsort label-1686
34f90 0d 0a 53 45 4c 45 43 54 20 63 6f 72 30 2e 63 6f  ..SELECT cor0.co
34fa0 6c 30 20 2a 20 63 6f 72 30 2e 63 6f 6c 30 20 2b  l0 * cor0.col0 +
34fb0 20 33 38 20 44 49 56 20 2d 20 33 36 20 41 53 20   38 DIV - 36 AS 
34fc0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41  col2 FROM tab1 A
34fd0 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
34fe0 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  cor0.col0..----.
34ff0 0a 34 38 33 0d 0a 36 37 32 33 0d 0a 37 38 33 0d  .483..6723..783.
35000 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
35010 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
35020 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
35030 74 20 6c 61 62 65 6c 2d 31 36 38 36 0d 0a 53 45  t label-1686..SE
35040 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c 30 20 2a  LECT cor0.col0 *
35050 20 63 6f 72 30 2e 63 6f 6c 30 20 2b 20 33 38 20   cor0.col0 + 38 
35060 2f 20 2d 20 33 36 20 41 53 20 63 6f 6c 32 20 46  / - 36 AS col2 F
35070 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
35080 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
35090 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 34 38 33 0d 0a  ol0..----..483..
350a0 36 37 32 33 0d 0a 37 38 33 0d 0a 0d 0a 71 75 65  6723..783....que
350b0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
350c0 4c 45 43 54 20 2d 20 39 33 20 41 53 20 63 6f 6c  LECT - 93 AS col
350d0 30 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55  0 FROM tab2 GROU
350e0 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a  P BY tab2.col2..
350f0 2d 2d 2d 2d 0d 0a 2d 39 33 0d 0a 2d 39 33 0d 0a  ----..-93..-93..
35100 2d 39 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -93....query I r
35110 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
35120 49 53 54 49 4e 43 54 20 37 33 20 46 52 4f 4d 20  ISTINCT 73 FROM 
35130 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 63 6f  tab0 GROUP BY co
35140 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 37 33 0d 0a 0d 0a  l0..----..73....
35150 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
35160 0a 53 45 4c 45 43 54 20 38 30 20 41 53 20 63 6f  .SELECT 80 AS co
35170 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f  l2 FROM tab2 GRO
35180 55 50 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d  UP BY tab2.col1.
35190 0a 2d 2d 2d 2d 0d 0a 38 30 0d 0a 38 30 0d 0a 38  .----..80..80..8
351a0 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
351b0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
351c0 54 49 4e 43 54 20 63 6f 72 30 2e 63 6f 6c 32 20  TINCT cor0.col2 
351d0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
351e0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
351f0 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d  col2, cor0.col2.
35200 0a 2d 2d 2d 2d 0d 0a 34 35 0d 0a 37 31 0d 0a 38  .----..45..71..8
35210 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
35220 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 74 61  ort..SELECT + ta
35230 62 32 2e 63 6f 6c 32 20 2a 20 63 6f 6c 32 20 41  b2.col2 * col2 A
35240 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
35250 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63   GROUP BY tab2.c
35260 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33 33 36 34 0d  ol2..----..3364.
35270 0a 36 32 34 31 0d 0a 37 35 36 39 0d 0a 0d 0a 71  .6241..7569....q
35280 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
35290 53 45 4c 45 43 54 20 2b 20 35 34 20 2a 20 2d 20  SELECT + 54 * - 
352a0 63 6f 72 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74  cor0.col2 FROM t
352b0 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
352c0 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a  P BY cor0.col2..
352d0 2d 2d 2d 2d 0d 0a 2d 33 31 33 32 0d 0a 2d 34 32  ----..-3132..-42
352e0 36 36 0d 0a 2d 34 36 39 38 0d 0a 0d 0a 6f 6e 6c  66..-4698....onl
352f0 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
35300 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
35310 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
35320 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 36  rowsort label-16
35330 39 33 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 72  93..SELECT - cor
35340 31 2e 63 6f 6c 30 20 44 49 56 20 2d 20 28 20 32  1.col0 DIV - ( 2
35350 31 20 29 20 2b 20 63 6f 72 31 2e 63 6f 6c 30 20  1 ) + cor1.col0 
35360 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
35370 31 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20  1 AS cor0 CROSS 
35380 4a 4f 49 4e 20 74 61 62 31 20 41 53 20 63 6f 72  JOIN tab1 AS cor
35390 31 20 47 52 4f 55 50 20 42 59 20 63 6f 72 31 2e  1 GROUP BY cor1.
353a0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a  col0..----..23..
353b0 32 39 0d 0a 38 35 0d 0a 0d 0a 73 6b 69 70 69 66  29..85....skipif
353c0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
353d0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
353e0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
353f0 36 39 33 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  693..SELECT - co
35400 72 31 2e 63 6f 6c 30 20 2f 20 2d 20 28 20 32 31  r1.col0 / - ( 21
35410 20 29 20 2b 20 63 6f 72 31 2e 63 6f 6c 30 20 41   ) + cor1.col0 A
35420 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
35430 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a   AS cor0 CROSS J
35440 4f 49 4e 20 74 61 62 31 20 41 53 20 63 6f 72 31  OIN tab1 AS cor1
35450 20 47 52 4f 55 50 20 42 59 20 63 6f 72 31 2e 63   GROUP BY cor1.c
35460 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 32  ol0..----..23..2
35470 39 0d 0a 38 35 0d 0a 0d 0a 71 75 65 72 79 20 49  9..85....query I
35480 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
35490 20 37 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72   7 FROM tab0 cor
354a0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
354b0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 37 0d 0a 37  col0..----..7..7
354c0 0d 0a 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..7....query I r
354d0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
354e0 49 53 54 49 4e 43 54 20 2b 20 35 20 46 52 4f 4d  ISTINCT + 5 FROM
354f0 20 74 61 62 31 20 63 6f 72 30 20 47 52 4f 55 50   tab1 cor0 GROUP
35500 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d   BY cor0.col0..-
35510 2d 2d 2d 0d 0a 35 0d 0a 0d 0a 71 75 65 72 79 20  ---..5....query 
35520 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
35530 54 20 41 4c 4c 20 2d 20 63 6f 72 30 2e 63 6f 6c  T ALL - cor0.col
35540 31 20 2a 20 2d 20 63 6f 72 30 2e 63 6f 6c 31 20  1 * - cor0.col1 
35550 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
35560 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d  0 GROUP BY col1.
35570 0a 2d 2d 2d 2d 0d 0a 31 36 38 31 0d 0a 33 34 38  .----..1681..348
35580 31 0d 0a 33 37 32 31 0d 0a 0d 0a 71 75 65 72 79  1..3721....query
35590 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
355a0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f  CT DISTINCT - co
355b0 72 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  r0.col2 FROM tab
355c0 31 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  1 cor0 GROUP BY 
355d0 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 72 30 2e  cor0.col2, cor0.
355e0 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 35 0d  col1..----..-45.
355f0 0a 2d 37 31 0d 0a 2d 38 0d 0a 0d 0a 71 75 65 72  .-71..-8....quer
35600 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
35610 45 43 54 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20  ECT + cor0.col1 
35620 2a 20 2d 20 63 6f 72 30 2e 63 6f 6c 31 20 2b 20  * - cor0.col1 + 
35630 63 6f 72 30 2e 63 6f 6c 31 20 46 52 4f 4d 20 74  cor0.col1 FROM t
35640 61 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab2 AS cor0 GROU
35650 50 20 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  P BY col1..----.
35660 0a 2d 31 36 34 30 0d 0a 2d 33 34 32 32 0d 0a 2d  .-1640..-3422..-
35670 33 36 36 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  3660....query I 
35680 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
35690 44 49 53 54 49 4e 43 54 20 2b 20 37 31 20 2a 20  DISTINCT + 71 * 
356a0 74 61 62 31 2e 63 6f 6c 32 20 41 53 20 63 6f 6c  tab1.col2 AS col
356b0 32 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  2 FROM tab1 GROU
356c0 50 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  P BY col2..----.
356d0 0a 33 31 39 35 0d 0a 35 30 34 31 0d 0a 35 36 38  .3195..5041..568
356e0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
356f0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 34 31 20 46  ort..SELECT 41 F
35700 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42  ROM tab0 GROUP B
35710 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d  Y tab0.col1..---
35720 2d 0d 0a 34 31 0d 0a 34 31 0d 0a 0d 0a 71 75 65  -..41..41....que
35730 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
35740 4c 45 43 54 20 2b 20 63 6f 72 30 2e 63 6f 6c 31  LECT + cor0.col1
35750 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
35760 62 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b2 AS cor0 GROUP
35770 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63   BY cor0.col0, c
35780 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  or0.col1..----..
35790 34 31 0d 0a 35 39 0d 0a 36 31 0d 0a 0d 0a 71 75  41..59..61....qu
357a0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
357b0 45 4c 45 43 54 20 41 4c 4c 20 74 61 62 30 2e 63  ELECT ALL tab0.c
357c0 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol0 AS col1 FROM
357d0 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 63   tab0 GROUP BY c
357e0 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 36 0d 0a 34  ol0..----..26..4
357f0 33 0d 0a 38 33 0d 0a 0d 0a 71 75 65 72 79 20 49  3..83....query I
35800 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
35810 20 41 4c 4c 20 2b 20 63 6f 72 30 2e 63 6f 6c 31   ALL + cor0.col1
35820 20 2a 20 63 6f 72 30 2e 63 6f 6c 31 20 46 52 4f   * cor0.col1 FRO
35830 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47  M tab0 AS cor0 G
35840 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c  ROUP BY cor0.col
35850 31 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30  1, col1..----..0
35860 0d 0a 36 35 36 31 0d 0a 0d 0a 71 75 65 72 79 20  ..6561....query 
35870 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
35880 54 20 41 4c 4c 20 63 6f 72 30 2e 63 6f 6c 31 20  T ALL cor0.col1 
35890 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
358a0 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
358b0 42 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f  BY cor0.col1, co
358c0 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 34  r0.col1..----..4
358d0 34 0d 0a 35 37 0d 0a 36 0d 0a 0d 0a 71 75 65 72  4..57..6....quer
358e0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
358f0 45 43 54 20 74 61 62 30 2e 63 6f 6c 32 20 2b 20  ECT tab0.col2 + 
35900 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 47  col2 FROM tab0 G
35910 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f 6c  ROUP BY tab0.col
35920 32 0d 0a 2d 2d 2d 2d 0d 0a 31 35 38 0d 0a 34 38  2..----..158..48
35930 0d 0a 37 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..76....query I 
35940 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
35950 32 39 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f  29 FROM tab1 GRO
35960 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 30 0d  UP BY tab1.col0.
35970 0a 2d 2d 2d 2d 0d 0a 32 39 0d 0a 32 39 0d 0a 32  .----..29..29..2
35980 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  9....onlyif mysq
35990 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
359a0 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
359b0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
359c0 6c 61 62 65 6c 2d 31 37 30 37 0d 0a 53 45 4c 45  label-1707..SELE
359d0 43 54 20 41 4c 4c 20 2b 20 43 41 53 54 28 20 4e  CT ALL + CAST( N
359e0 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
359f0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
35a00 32 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  2 AS cor0 GROUP 
35a10 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63 6f  BY cor0.col0, co
35a20 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  r0.col0..----..N
35a30 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ULL..NULL..NULL.
35a40 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
35a50 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
35a60 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
35a70 74 20 6c 61 62 65 6c 2d 31 37 30 37 0d 0a 53 45  t label-1707..SE
35a80 4c 45 43 54 20 41 4c 4c 20 2b 20 43 41 53 54 20  LECT ALL + CAST 
35a90 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
35aa0 52 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  R ) AS col1 FROM
35ab0 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 47 52   tab2 AS cor0 GR
35ac0 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30  OUP BY cor0.col0
35ad0 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  , cor0.col0..---
35ae0 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
35af0 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ULL....query I r
35b00 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
35b10 20 2d 20 33 38 20 46 52 4f 4d 20 74 61 62 30 20   - 38 FROM tab0 
35b20 47 52 4f 55 50 20 42 59 20 74 61 62 30 2e 63 6f  GROUP BY tab0.co
35b30 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 38 0d 0a 2d  l1..----..-38..-
35b40 33 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  38....onlyif mys
35b50 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
35b60 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
35b70 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
35b80 20 6c 61 62 65 6c 2d 31 37 30 39 0d 0a 53 45 4c   label-1709..SEL
35b90 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 39  ECT DISTINCT + 9
35ba0 30 20 44 49 56 20 74 61 62 32 2e 63 6f 6c 31 20  0 DIV tab2.col1 
35bb0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
35bc0 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
35bd0 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 32  col1..----..1..2
35be0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
35bf0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
35c00 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
35c10 72 74 20 6c 61 62 65 6c 2d 31 37 30 39 0d 0a 53  rt label-1709..S
35c20 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
35c30 20 39 30 20 2f 20 74 61 62 32 2e 63 6f 6c 31 20   90 / tab2.col1 
35c40 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
35c50 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
35c60 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 32  col1..----..1..2
35c70 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
35c80 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
35c90 49 4e 43 54 20 2b 20 32 31 20 41 53 20 63 6f 6c  INCT + 21 AS col
35ca0 31 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  1 FROM tab1 GROU
35cb0 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a  P BY tab1.col2..
35cc0 2d 2d 2d 2d 0d 0a 32 31 0d 0a 0d 0a 73 6b 69 70  ----..21....skip
35cd0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
35ce0 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
35cf0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
35d00 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
35d10 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
35d20 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
35d30 54 49 4e 43 54 20 2b 20 31 30 20 2a 20 2b 20 43  TINCT + 10 * + C
35d40 4f 41 4c 45 53 43 45 20 28 20 63 6f 72 30 2e 63  OALESCE ( cor0.c
35d50 6f 6c 30 2c 20 2d 20 63 6f 72 30 2e 63 6f 6c 30  ol0, - cor0.col0
35d60 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   ) col2 FROM tab
35d70 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
35d80 42 59 20 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f  BY cor0.col2, co
35d90 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32  r0.col0..----..2
35da0 32 30 0d 0a 32 38 30 0d 0a 38 32 30 0d 0a 0d 0a  20..280..820....
35db0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
35dc0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 28 20  .SELECT ALL - ( 
35dd0 63 6f 72 30 2e 63 6f 6c 31 20 29 20 46 52 4f 4d  cor0.col1 ) FROM
35de0 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47 52   tab0 AS cor0 GR
35df0 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 31  OUP BY cor0.col1
35e00 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d  , cor0.col2..---
35e10 2d 0d 0a 2d 38 31 0d 0a 30 0d 0a 30 0d 0a 0d 0a  -..-81..0..0....
35e20 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
35e30 0a 53 45 4c 45 43 54 20 2b 20 33 38 20 46 52 4f  .SELECT + 38 FRO
35e40 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
35e50 74 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  tab0.col0..----.
35e60 0a 33 38 0d 0a 33 38 0d 0a 33 38 0d 0a 0d 0a 71  .38..38..38....q
35e70 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
35e80 53 45 4c 45 43 54 20 34 37 20 2b 20 2d 20 63 6f  SELECT 47 + - co
35e90 72 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20  r0.col2 AS col2 
35ea0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
35eb0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
35ec0 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 0d  col2..----..-24.
35ed0 0a 32 0d 0a 33 39 0d 0a 0d 0a 73 6b 69 70 69 66  .2..39....skipif
35ee0 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
35ef0 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
35f00 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
35f10 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
35f20 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
35f30 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
35f40 20 32 20 2a 20 63 6f 6c 32 20 63 6f 6c 30 20 46   2 * col2 col0 F
35f50 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
35f60 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
35f70 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 38 0d  ol2..----..-158.
35f80 0a 2d 34 38 0d 0a 2d 37 36 0d 0a 0d 0a 6f 6e 6c  .-48..-76....onl
35f90 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
35fa0 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
35fb0 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
35fc0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 37  rowsort label-17
35fd0 31 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  16..SELECT DISTI
35fe0 4e 43 54 20 2d 20 34 37 20 44 49 56 20 2b 20 31  NCT - 47 DIV + 1
35ff0 36 20 2b 20 2d 20 63 6f 72 30 2e 63 6f 6c 32 20  6 + - cor0.col2 
36000 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
36010 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
36020 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d  BY cor0.col2..--
36030 2d 2d 0d 0a 2d 31 30 0d 0a 2d 34 37 0d 0a 2d 37  --..-10..-47..-7
36040 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
36050 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
36060 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
36070 6f 72 74 20 6c 61 62 65 6c 2d 31 37 31 36 0d 0a  ort label-1716..
36080 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
36090 2d 20 34 37 20 2f 20 2b 20 31 36 20 2b 20 2d 20  - 47 / + 16 + - 
360a0 63 6f 72 30 2e 63 6f 6c 32 20 41 53 20 63 6f 6c  cor0.col2 AS col
360b0 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  1 FROM tab1 AS c
360c0 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
360d0 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  0.col2..----..-1
360e0 30 0d 0a 2d 34 37 0d 0a 2d 37 33 0d 0a 0d 0a 73  0..-47..-73....s
360f0 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
36100 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
36110 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
36120 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
36130 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
36140 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
36150 2d 20 74 61 62 30 2e 63 6f 6c 32 20 63 6f 6c 30  - tab0.col2 col0
36160 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
36170 20 42 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a   BY col2..----..
36180 2d 32 34 0d 0a 2d 33 38 0d 0a 2d 37 39 0d 0a 0d  -24..-38..-79...
36190 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
361a0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
361b0 54 20 2b 20 32 37 20 41 53 20 63 6f 6c 32 20 46  T + 27 AS col2 F
361c0 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
361d0 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 32 37  Y col1..----..27
361e0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
361f0 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
36200 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
36210 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
36220 61 62 65 6c 2d 31 37 31 39 0d 0a 53 45 4c 45 43  abel-1719..SELEC
36230 54 20 41 4c 4c 20 31 20 44 49 56 20 63 6f 72 30  T ALL 1 DIV cor0
36240 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20  .col0 FROM tab2 
36250 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
36260 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a  l0..----..0..0..
36270 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
36280 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
36290 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
362a0 6f 72 74 20 6c 61 62 65 6c 2d 31 37 31 39 0d 0a  ort label-1719..
362b0 53 45 4c 45 43 54 20 41 4c 4c 20 31 20 2f 20 63  SELECT ALL 1 / c
362c0 6f 72 30 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61  or0.col0 FROM ta
362d0 62 32 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  b2 cor0 GROUP BY
362e0 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   col0..----..0..
362f0 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  0..0....query I 
36300 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
36310 2b 20 33 36 20 41 53 20 63 6f 6c 32 20 46 52 4f  + 36 AS col2 FRO
36320 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
36330 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  tab0.col2..----.
36340 0a 33 36 0d 0a 33 36 0d 0a 33 36 0d 0a 0d 0a 71  .36..36..36....q
36350 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
36360 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
36370 2d 20 63 6f 72 31 2e 63 6f 6c 32 20 46 52 4f 4d  - cor1.col2 FROM
36380 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 43 52   tab1 AS cor0 CR
36390 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53  OSS JOIN tab1 AS
363a0 20 63 6f 72 31 20 47 52 4f 55 50 20 42 59 20 63   cor1 GROUP BY c
363b0 6f 72 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  or1.col2..----..
363c0 2d 34 35 0d 0a 2d 37 31 0d 0a 2d 38 0d 0a 0d 0a  -45..-71..-8....
363d0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
363e0 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
363f0 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
36400 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
36410 2d 31 37 32 32 0d 0a 53 45 4c 45 43 54 20 2b 20  -1722..SELECT + 
36420 63 6f 72 30 2e 63 6f 6c 31 20 44 49 56 20 34 33  cor0.col1 DIV 43
36430 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
36440 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31  r0 GROUP BY col1
36450 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a 31 0d  ..----..0..1..1.
36460 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
36470 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
36480 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
36490 74 20 6c 61 62 65 6c 2d 31 37 32 32 0d 0a 53 45  t label-1722..SE
364a0 4c 45 43 54 20 2b 20 63 6f 72 30 2e 63 6f 6c 31  LECT + cor0.col1
364b0 20 2f 20 34 33 20 46 52 4f 4d 20 74 61 62 31 20   / 43 FROM tab1 
364c0 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
364d0 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   col1..----..0..
364e0 31 0d 0a 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20  1..1....query I 
364f0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
36500 2d 20 74 61 62 32 2e 63 6f 6c 31 20 2b 20 2d 20  - tab2.col1 + - 
36510 74 61 62 32 2e 63 6f 6c 31 20 46 52 4f 4d 20 74  tab2.col1 FROM t
36520 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab2 GROUP BY tab
36530 32 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  2.col1..----..-1
36540 31 38 0d 0a 2d 31 32 32 0d 0a 2d 38 32 0d 0a 0d  18..-122..-82...
36550 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
36560 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
36570 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
36580 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
36590 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
365a0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
365b0 54 20 2d 20 63 6f 6c 30 20 63 6f 6c 32 20 46 52  T - col0 col2 FR
365c0 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
365d0 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32   col0..----..-22
365e0 0d 0a 2d 32 38 0d 0a 2d 38 32 0d 0a 0d 0a 6f 6e  ..-28..-82....on
365f0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
36600 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
36610 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
36620 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
36630 37 32 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  725..SELECT ALL 
36640 74 61 62 32 2e 63 6f 6c 32 20 44 49 56 20 2d 20  tab2.col2 DIV - 
36650 31 39 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  19 col0 FROM tab
36660 32 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e  2 GROUP BY tab2.
36670 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a  col2..----..-3..
36680 2d 34 0d 0a 2d 34 0d 0a 0d 0a 73 6b 69 70 69 66  -4..-4....skipif
36690 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
366a0 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20  patible..skipif 
366b0 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
366c0 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
366d0 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
366e0 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
366f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
36700 74 20 6c 61 62 65 6c 2d 31 37 32 35 0d 0a 53 45  t label-1725..SE
36710 4c 45 43 54 20 41 4c 4c 20 74 61 62 32 2e 63 6f  LECT ALL tab2.co
36720 6c 32 20 2f 20 2d 20 31 39 20 63 6f 6c 30 20 46  l2 / - 19 col0 F
36730 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42  ROM tab2 GROUP B
36740 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab2.col2..---
36750 2d 0d 0a 2d 33 0d 0a 2d 34 0d 0a 2d 34 0d 0a 0d  -..-3..-4..-4...
36760 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
36770 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63  ..SELECT ALL + c
36780 6f 6c 32 20 2a 20 2b 20 63 6f 72 30 2e 63 6f 6c  ol2 * + cor0.col
36790 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  2 AS col2 FROM t
367a0 61 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55  ab1 AS cor0 GROU
367b0 50 20 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a  P BY cor0.col2..
367c0 2d 2d 2d 2d 0d 0a 32 30 32 35 0d 0a 35 30 34 31  ----..2025..5041
367d0 0d 0a 36 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..64....query I 
367e0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
367f0 41 4c 4c 20 33 30 20 46 52 4f 4d 20 74 61 62 32  ALL 30 FROM tab2
36800 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
36810 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  or0.col2..----..
36820 33 30 0d 0a 33 30 0d 0a 33 30 0d 0a 0d 0a 71 75  30..30..30....qu
36830 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
36840 45 4c 45 43 54 20 63 6f 72 30 2e 63 6f 6c 32 20  ELECT cor0.col2 
36850 2b 20 63 6f 72 30 2e 63 6f 6c 32 20 41 53 20 63  + cor0.col2 AS c
36860 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol2 FROM tab2 AS
36870 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
36880 6f 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a  ol0, cor0.col2..
36890 2d 2d 2d 2d 0d 0a 31 31 36 0d 0a 31 35 38 0d 0a  ----..116..158..
368a0 31 37 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  174....query I r
368b0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 36  owsort..SELECT 6
368c0 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20   FROM tab2 cor0 
368d0 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
368e0 6c 30 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d  l0, cor0.col0..-
368f0 2d 2d 2d 0d 0a 36 0d 0a 36 0d 0a 36 0d 0a 0d 0a  ---..6..6..6....
36900 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
36910 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f  .SELECT ALL + co
36920 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f  l0 FROM tab1 GRO
36930 55 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d  UP BY col0..----
36940 0d 0a 32 32 0d 0a 32 38 0d 0a 38 32 0d 0a 0d 0a  ..22..28..82....
36950 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
36960 0a 53 45 4c 45 43 54 20 2b 20 74 61 62 30 2e 63  .SELECT + tab0.c
36970 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol2 AS col0 FROM
36980 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
36990 61 62 30 2e 63 6f 6c 32 20 48 41 56 49 4e 47 20  ab0.col2 HAVING 
369a0 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20 3c 3e 20  NOT ( NULL ) <> 
369b0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
369c0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
369d0 45 4c 45 43 54 20 2d 20 38 37 20 41 53 20 63 6f  ELECT - 87 AS co
369e0 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
369f0 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
36a00 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 37 0d 0a 2d  l1..----..-87..-
36a10 38 37 0d 0a 2d 38 37 0d 0a 0d 0a 71 75 65 72 79  87..-87....query
36a20 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
36a30 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f  CT DISTINCT + co
36a40 72 30 2e 63 6f 6c 31 20 2a 20 63 6f 72 30 2e 63  r0.col1 * cor0.c
36a50 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol1 FROM tab2 AS
36a60 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
36a70 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72 30 2e 63  or0.col1, cor0.c
36a80 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36 38 31 0d  ol0..----..1681.
36a90 0a 33 34 38 31 0d 0a 33 37 32 31 0d 0a 0d 0a 71  .3481..3721....q
36aa0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
36ab0 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 72  SELECT ALL - cor
36ac0 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  0.col2 FROM tab2
36ad0 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
36ae0 59 20 63 6f 72 30 2e 63 6f 6c 31 2c 20 63 6f 72  Y cor0.col1, cor
36af0 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35  0.col2..----..-5
36b00 38 0d 0a 2d 37 39 0d 0a 2d 38 37 0d 0a 0d 0a 71  8..-79..-87....q
36b10 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
36b20 53 45 4c 45 43 54 20 2d 20 32 36 20 41 53 20 63  SELECT - 26 AS c
36b30 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 2c 20 74  ol0 FROM tab2, t
36b40 61 62 31 20 63 6f 72 30 20 47 52 4f 55 50 20 42  ab1 cor0 GROUP B
36b50 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab2.col2..---
36b60 2d 0d 0a 2d 32 36 0d 0a 2d 32 36 0d 0a 2d 32 36  -..-26..-26..-26
36b70 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
36b80 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 32 37  ort..SELECT - 27
36b90 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
36ba0 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
36bb0 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a   BY col0..----..
36bc0 2d 32 37 0d 0a 2d 32 37 0d 0a 2d 32 37 0d 0a 0d  -27..-27..-27...
36bd0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
36be0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
36bf0 54 20 2b 20 33 31 20 41 53 20 63 6f 6c 30 20 46  T + 31 AS col0 F
36c00 52 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42  ROM tab1 GROUP B
36c10 59 20 74 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d  Y tab1.col2..---
36c20 2d 0d 0a 33 31 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..31....skipif 
36c30 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
36c40 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
36c50 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
36c60 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
36c70 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
36c80 74 0d 0a 53 45 4c 45 43 54 20 33 35 20 63 6f 6c  t..SELECT 35 col
36c90 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
36ca0 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
36cb0 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33 35  0.col2..----..35
36cc0 0d 0a 33 35 0d 0a 33 35 0d 0a 0d 0a 71 75 65 72  ..35..35....quer
36cd0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
36ce0 45 43 54 20 2d 20 37 38 20 2b 20 2d 20 37 33 20  ECT - 78 + - 73 
36cf0 2a 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32  * + col2 AS col2
36d00 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
36d10 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
36d20 2e 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 30  .col2, cor0.col0
36d30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 33 31 32 0d 0a 2d  ..----..-4312..-
36d40 35 38 34 35 0d 0a 2d 36 34 32 39 0d 0a 0d 0a 71  5845..-6429....q
36d50 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
36d60 53 45 4c 45 43 54 20 2b 20 2b 20 33 38 20 46 52  SELECT + + 38 FR
36d70 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
36d80 20 74 61 62 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   tab1.col1..----
36d90 0d 0a 33 38 0d 0a 33 38 0d 0a 33 38 0d 0a 0d 0a  ..38..38..38....
36da0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
36db0 0a 53 45 4c 45 43 54 20 2d 20 74 61 62 31 2e 63  .SELECT - tab1.c
36dc0 6f 6c 30 20 2a 20 74 61 62 31 2e 63 6f 6c 30 20  ol0 * tab1.col0 
36dd0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
36de0 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
36df0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 38 34  col0..----..-484
36e00 0d 0a 2d 36 37 32 34 0d 0a 2d 37 38 34 0d 0a 0d  ..-6724..-784...
36e10 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
36e20 0d 0a 53 45 4c 45 43 54 20 2d 20 32 20 46 52 4f  ..SELECT - 2 FRO
36e30 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
36e40 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  tab0.col2..----.
36e50 0a 2d 32 0d 0a 2d 32 0d 0a 2d 32 0d 0a 0d 0a 71  .-2..-2..-2....q
36e60 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
36e70 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
36e80 2d 20 33 33 20 41 53 20 63 6f 6c 31 20 46 52 4f  - 33 AS col1 FRO
36e90 4d 20 74 61 62 31 2c 20 74 61 62 30 20 41 53 20  M tab1, tab0 AS 
36ea0 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
36eb0 72 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  r0.col2..----..-
36ec0 33 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  33....query I ro
36ed0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
36ee0 4c 20 2d 20 35 36 20 46 52 4f 4d 20 74 61 62 32  L - 56 FROM tab2
36ef0 20 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63   GROUP BY tab2.c
36f00 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 36 0d 0a  ol0..----..-56..
36f10 2d 35 36 0d 0a 2d 35 36 0d 0a 0d 0a 71 75 65 72  -56..-56....quer
36f20 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
36f30 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 39  ECT DISTINCT - 9
36f40 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
36f50 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
36f60 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 39  0.col2..----..-9
36f70 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
36f80 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
36f90 54 49 4e 43 54 20 37 37 20 2b 20 39 37 20 41 53  TINCT 77 + 97 AS
36fa0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
36fb0 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59  AS cor0 GROUP BY
36fc0 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   cor0.col0..----
36fd0 0d 0a 31 37 34 0d 0a 0d 0a 71 75 65 72 79 20 49  ..174....query I
36fe0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
36ff0 20 2d 20 38 38 20 41 53 20 63 6f 6c 32 20 46 52   - 88 AS col2 FR
37000 4f 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59  OM tab0 GROUP BY
37010 20 74 61 62 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d   tab0.col1..----
37020 0d 0a 2d 38 38 0d 0a 2d 38 38 0d 0a 0d 0a 71 75  ..-88..-88....qu
37030 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
37040 45 4c 45 43 54 20 2b 20 2d 20 37 38 20 41 53 20  ELECT + - 78 AS 
37050 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 47  col1 FROM tab1 G
37060 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
37070 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 38 0d 0a 2d 37  1..----..-78..-7
37080 38 0d 0a 2d 37 38 0d 0a 0d 0a 71 75 65 72 79 20  8..-78....query 
37090 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
370a0 54 20 44 49 53 54 49 4e 43 54 20 2b 20 34 38 20  T DISTINCT + 48 
370b0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
370c0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
370d0 63 6f 6c 31 2c 20 63 6f 72 30 2e 63 6f 6c 30 0d  col1, cor0.col0.
370e0 0a 2d 2d 2d 2d 0d 0a 34 38 0d 0a 0d 0a 73 6b 69  .----..48....ski
370f0 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
37100 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
37110 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
37120 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
37130 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
37140 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
37150 4c 20 74 61 62 32 2e 63 6f 6c 31 20 63 6f 6c 32  L tab2.col1 col2
37160 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50   FROM tab2 GROUP
37170 20 42 59 20 74 61 62 32 2e 63 6f 6c 31 0d 0a 2d   BY tab2.col1..-
37180 2d 2d 2d 0d 0a 34 31 0d 0a 35 39 0d 0a 36 31 0d  ---..41..59..61.
37190 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
371a0 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
371b0 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
371c0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
371d0 62 65 6c 2d 31 37 35 31 0d 0a 53 45 4c 45 43 54  bel-1751..SELECT
371e0 20 2b 20 63 6f 72 30 2e 63 6f 6c 32 20 44 49 56   + cor0.col2 DIV
371f0 20 39 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72   9 FROM tab1 cor
37200 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d  0 GROUP BY col2.
37210 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 35 0d 0a 37 0d 0a  .----..0..5..7..
37220 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
37230 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
37240 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
37250 20 6c 61 62 65 6c 2d 31 37 35 31 0d 0a 53 45 4c   label-1751..SEL
37260 45 43 54 20 2b 20 63 6f 72 30 2e 63 6f 6c 32 20  ECT + cor0.col2 
37270 2f 20 39 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  / 9 FROM tab1 co
37280 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 32  r0 GROUP BY col2
37290 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 35 0d 0a 37 0d  ..----..0..5..7.
372a0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
372b0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
372c0 4e 43 54 20 36 35 20 46 52 4f 4d 20 74 61 62 31  NCT 65 FROM tab1
372d0 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
372e0 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  or0.col0..----..
372f0 36 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  65....query I ro
37300 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
37310 63 6f 72 30 2e 63 6f 6c 30 20 2a 20 2d 20 36 37  cor0.col0 * - 67
37320 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
37330 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
37340 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 37  .col0..----..-17
37350 34 32 0d 0a 2d 32 38 38 31 0d 0a 2d 35 35 36 31  42..-2881..-5561
37360 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
37370 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  ort..SELECT + co
37380 72 30 2e 63 6f 6c 30 20 2a 20 2b 20 39 32 20 46  r0.col0 * + 92 F
37390 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
373a0 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63   GROUP BY cor0.c
373b0 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32 30 32 34 0d  ol0..----..2024.
373c0 0a 32 35 37 36 0d 0a 37 35 34 34 0d 0a 0d 0a 71  .2576..7544....q
373d0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
373e0 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 39 32 20  SELECT ALL + 92 
373f0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
37400 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20  1 AS cor0 GROUP 
37410 42 59 20 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f  BY cor0.col2, co
37420 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 39 32 0d 0a 39 32  l2..----..92..92
37430 0d 0a 39 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..92....query I 
37440 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
37450 41 4c 4c 20 2d 20 28 20 34 34 20 29 20 46 52 4f  ALL - ( 44 ) FRO
37460 4d 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20  M tab0 GROUP BY 
37470 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 34 0d  col1..----..-44.
37480 0a 2d 34 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-44....query I 
37490 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
374a0 44 49 53 54 49 4e 43 54 20 37 20 2b 20 63 6f 72  DISTINCT 7 + cor
374b0 30 2e 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  0.col2 FROM tab1
374c0 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
374d0 59 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 31 35  Y col2..----..15
374e0 0d 0a 35 32 0d 0a 37 38 0d 0a 0d 0a 71 75 65 72  ..52..78....quer
374f0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
37500 45 43 54 20 2d 20 33 32 20 41 53 20 63 6f 6c 31  ECT - 32 AS col1
37510 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
37520 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 32  r0 GROUP BY col2
37530 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 32 0d 0a 2d 33 32  ..----..-32..-32
37540 0d 0a 2d 33 32 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-32....query I
37550 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
37560 20 2b 20 2b 20 37 39 20 41 53 20 63 6f 6c 31 20   + + 79 AS col1 
37570 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
37580 42 59 20 74 61 62 32 2e 63 6f 6c 32 0d 0a 2d 2d  BY tab2.col2..--
37590 2d 2d 0d 0a 37 39 0d 0a 37 39 0d 0a 37 39 0d 0a  --..79..79..79..
375a0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
375b0 74 0d 0a 53 45 4c 45 43 54 20 2d 20 31 36 20 46  t..SELECT - 16 F
375c0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
375d0 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 30 0d 0a   GROUP BY col0..
375e0 2d 2d 2d 2d 0d 0a 2d 31 36 0d 0a 2d 31 36 0d 0a  ----..-16..-16..
375f0 2d 31 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -16....query I r
37600 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
37610 49 53 54 49 4e 43 54 20 2d 20 2b 20 32 34 20 46  ISTINCT - + 24 F
37620 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42  ROM tab2 GROUP B
37630 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  Y col1..----..-2
37640 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  4....query I row
37650 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 32  sort..SELECT + 2
37660 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  0 AS col2 FROM t
37670 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
37680 31 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 32 30  1.col1..----..20
37690 0d 0a 32 30 0d 0a 32 30 0d 0a 0d 0a 71 75 65 72  ..20..20....quer
376a0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
376b0 45 43 54 20 44 49 53 54 49 4e 43 54 20 39 31 20  ECT DISTINCT 91 
376c0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
376d0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
376e0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 39 31 0d 0a  col0..----..91..
376f0 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
37700 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
37710 20 68 61 73 20 73 74 72 69 63 74 20 63 6f 6c 75   has strict colu
37720 6d 6e 20 75 73 61 67 65 20 66 6f 72 20 47 52 4f  mn usage for GRO
37730 55 50 20 42 59 20 63 6c 61 75 73 65 73 0d 0a 71  UP BY clauses..q
37740 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
37750 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
37760 2d 20 43 4f 41 4c 45 53 43 45 20 28 20 2d 20 37  - COALESCE ( - 7
37770 30 2c 20 63 6f 72 30 2e 63 6f 6c 31 20 29 20 41  0, cor0.col1 ) A
37780 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
37790 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
377a0 59 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d  Y cor0.col0..---
377b0 2d 0d 0a 37 30 0d 0a 0d 0a 71 75 65 72 79 20 49  -..70....query I
377c0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
377d0 20 41 4c 4c 20 2b 20 34 33 20 2a 20 63 6f 6c 32   ALL + 43 * col2
377e0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
377f0 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
37800 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 32 34 39  .col2..----..249
37810 34 0d 0a 33 33 39 37 0d 0a 33 37 34 31 0d 0a 0d  4..3397..3741...
37820 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
37830 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
37840 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
37850 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
37860 6c 2d 31 37 36 36 0d 0a 53 45 4c 45 43 54 20 44  l-1766..SELECT D
37870 49 53 54 49 4e 43 54 20 2b 20 74 61 62 31 2e 63  ISTINCT + tab1.c
37880 6f 6c 30 20 44 49 56 20 74 61 62 31 2e 63 6f 6c  ol0 DIV tab1.col
37890 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  0 FROM tab1 GROU
378a0 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 30 0d 0a  P BY tab1.col0..
378b0 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69  ----..1....skipi
378c0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
378d0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
378e0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
378f0 31 37 36 36 0d 0a 53 45 4c 45 43 54 20 44 49 53  1766..SELECT DIS
37900 54 49 4e 43 54 20 2b 20 74 61 62 31 2e 63 6f 6c  TINCT + tab1.col
37910 30 20 2f 20 74 61 62 31 2e 63 6f 6c 30 20 46 52  0 / tab1.col0 FR
37920 4f 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59  OM tab1 GROUP BY
37930 20 74 61 62 31 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   tab1.col0..----
37940 0d 0a 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..1....query I r
37950 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
37960 20 63 6f 72 30 2e 63 6f 6c 30 20 41 53 20 63 6f   cor0.col0 AS co
37970 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
37980 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
37990 72 30 2e 63 6f 6c 31 2c 20 63 6f 6c 30 0d 0a 2d  r0.col1, col0..-
379a0 2d 2d 2d 0d 0a 2d 32 36 0d 0a 2d 34 33 0d 0a 2d  ---..-26..-43..-
379b0 38 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  83....query I ro
379c0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
379d0 4c 20 2b 20 39 39 20 46 52 4f 4d 20 74 61 62 31  L + 99 FROM tab1
379e0 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63   GROUP BY tab1.c
379f0 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 39 39 0d 0a 39  ol2..----..99..9
37a00 39 0d 0a 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49  9..99....query I
37a10 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
37a20 20 41 4c 4c 20 2b 20 37 32 20 2d 20 2b 20 31 33   ALL + 72 - + 13
37a30 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55 50   FROM tab0 GROUP
37a40 20 42 59 20 74 61 62 30 2e 63 6f 6c 32 0d 0a 2d   BY tab0.col2..-
37a50 2d 2d 2d 0d 0a 35 39 0d 0a 35 39 0d 0a 35 39 0d  ---..59..59..59.
37a60 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
37a70 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  rt..SELECT ALL +
37a80 20 33 37 20 46 52 4f 4d 20 74 61 62 32 20 41 53   37 FROM tab2 AS
37a90 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
37aa0 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33 37 0d 0a 33  ol2..----..37..3
37ab0 37 0d 0a 33 37 0d 0a 0d 0a 73 6b 69 70 69 66 20  7..37....skipif 
37ac0 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
37ad0 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
37ae0 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
37af0 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
37b00 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
37b10 74 0d 0a 53 45 4c 45 43 54 20 2d 20 31 33 20 2a  t..SELECT - 13 *
37b20 20 2d 20 32 34 20 63 6f 6c 30 20 46 52 4f 4d 20   - 24 col0 FROM 
37b30 74 61 62 30 20 63 6f 72 30 20 47 52 4f 55 50 20  tab0 cor0 GROUP 
37b40 42 59 20 63 6f 72 30 2e 63 6f 6c 32 0d 0a 2d 2d  BY cor0.col2..--
37b50 2d 2d 0d 0a 33 31 32 0d 0a 33 31 32 0d 0a 33 31  --..312..312..31
37b60 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
37b70 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 28  sort..SELECT - (
37b80 20 2b 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c   + col1 ) AS col
37b90 30 20 46 52 4f 4d 20 74 61 62 31 20 47 52 4f 55  0 FROM tab1 GROU
37ba0 50 20 42 59 20 74 61 62 31 2e 63 6f 6c 31 0d 0a  P BY tab1.col1..
37bb0 2d 2d 2d 2d 0d 0a 2d 34 34 0d 0a 2d 35 37 0d 0a  ----..-44..-57..
37bc0 2d 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  -6....onlyif mys
37bd0 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
37be0 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
37bf0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
37c00 20 6c 61 62 65 6c 2d 31 37 37 33 0d 0a 53 45 4c   label-1773..SEL
37c10 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63  ECT DISTINCT - c
37c20 6f 72 30 2e 63 6f 6c 31 20 44 49 56 20 2d 20 38  or0.col1 DIV - 8
37c30 34 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  4 col2 FROM tab1
37c40 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42   AS cor0 GROUP B
37c50 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  Y col1..----..0.
37c60 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
37c70 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
37c80 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
37c90 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
37ca0 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
37cb0 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
37cc0 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
37cd0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
37ce0 2d 31 37 37 33 0d 0a 53 45 4c 45 43 54 20 44 49  -1773..SELECT DI
37cf0 53 54 49 4e 43 54 20 2d 20 63 6f 72 30 2e 63 6f  STINCT - cor0.co
37d00 6c 31 20 2f 20 2d 20 38 34 20 63 6f 6c 32 20 46  l1 / - 84 col2 F
37d10 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
37d20 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 31 0d 0a   GROUP BY col1..
37d30 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79  ----..0....query
37d40 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
37d50 43 54 20 41 4c 4c 20 2b 20 2d 20 31 32 20 41 53  CT ALL + - 12 AS
37d60 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
37d70 47 52 4f 55 50 20 42 59 20 74 61 62 32 2e 63 6f  GROUP BY tab2.co
37d80 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 0d 0a 2d  l2..----..-12..-
37d90 31 32 0d 0a 2d 31 32 0d 0a 0d 0a 71 75 65 72 79  12..-12....query
37da0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
37db0 43 54 20 37 31 20 2a 20 63 6f 72 30 2e 63 6f 6c  CT 71 * cor0.col
37dc0 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
37dd0 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72  or0 GROUP BY cor
37de0 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  0.col1..----..0.
37df0 0a 35 37 35 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .5751....onlyif 
37e00 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
37e10 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
37e20 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
37e30 6f 72 74 20 6c 61 62 65 6c 2d 31 37 37 36 0d 0a  ort label-1776..
37e40 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 72 30 2e  SELECT ALL cor0.
37e50 63 6f 6c 32 20 2a 20 43 41 53 54 28 20 4e 55 4c  col2 * CAST( NUL
37e60 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 46 52  L AS SIGNED ) FR
37e70 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
37e80 47 52 4f 55 50 20 42 59 20 63 6f 6c 32 0d 0a 2d  GROUP BY col2..-
37e90 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ---..NULL..NULL.
37ea0 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
37eb0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
37ec0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
37ed0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 37  rowsort label-17
37ee0 37 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63  76..SELECT ALL c
37ef0 6f 72 30 2e 63 6f 6c 32 20 2a 20 43 41 53 54 20  or0.col2 * CAST 
37f00 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
37f10 52 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53  R ) FROM tab0 AS
37f20 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63   cor0 GROUP BY c
37f30 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ol2..----..NULL.
37f40 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f  .NULL..NULL....o
37f50 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
37f60 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
37f70 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
37f80 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
37f90 31 37 37 37 0d 0a 53 45 4c 45 43 54 20 44 49 53  1777..SELECT DIS
37fa0 54 49 4e 43 54 20 63 6f 72 30 2e 63 6f 6c 30 20  TINCT cor0.col0 
37fb0 44 49 56 20 2d 20 37 36 20 2b 20 63 6f 6c 30 20  DIV - 76 + col0 
37fc0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
37fd0 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e  0 GROUP BY cor0.
37fe0 63 6f 6c 30 2c 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d  col0, col0..----
37ff0 0d 0a 32 32 0d 0a 32 38 0d 0a 38 31 0d 0a 0d 0a  ..22..28..81....
38000 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
38010 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
38020 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
38030 61 62 65 6c 2d 31 37 37 37 0d 0a 53 45 4c 45 43  abel-1777..SELEC
38040 54 20 44 49 53 54 49 4e 43 54 20 63 6f 72 30 2e  T DISTINCT cor0.
38050 63 6f 6c 30 20 2f 20 2d 20 37 36 20 2b 20 63 6f  col0 / - 76 + co
38060 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
38070 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
38080 72 30 2e 63 6f 6c 30 2c 20 63 6f 6c 30 0d 0a 2d  r0.col0, col0..-
38090 2d 2d 2d 0d 0a 32 32 0d 0a 32 38 0d 0a 38 31 0d  ---..22..28..81.
380a0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
380b0 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 33  rt..SELECT - + 3
380c0 33 20 46 52 4f 4d 20 74 61 62 30 20 47 52 4f 55  3 FROM tab0 GROU
380d0 50 20 42 59 20 74 61 62 30 2e 63 6f 6c 31 0d 0a  P BY tab0.col1..
380e0 2d 2d 2d 2d 0d 0a 2d 33 33 0d 0a 2d 33 33 0d 0a  ----..-33..-33..
380f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
38100 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
38110 39 34 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  94 AS col2 FROM 
38120 74 61 62 32 20 63 6f 72 30 20 47 52 4f 55 50 20  tab2 cor0 GROUP 
38130 42 59 20 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d  BY cor0.col1..--
38140 2d 2d 0d 0a 2d 39 34 0d 0a 2d 39 34 0d 0a 2d 39  --..-94..-94..-9
38150 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  4....query I row
38160 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
38170 20 2d 20 28 20 2b 20 35 32 20 29 20 46 52 4f 4d   - ( + 52 ) FROM
38180 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20 74   tab1 GROUP BY t
38190 61 62 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  ab1.col2..----..
381a0 2d 35 32 0d 0a 2d 35 32 0d 0a 2d 35 32 0d 0a 0d  -52..-52..-52...
381b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
381c0 0d 0a 53 45 4c 45 43 54 20 2d 20 39 20 46 52 4f  ..SELECT - 9 FRO
381d0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 47  M tab0 AS cor0 G
381e0 52 4f 55 50 20 42 59 20 63 6f 6c 30 2c 20 63 6f  ROUP BY col0, co
381f0 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  r0.col1..----..-
38200 39 0d 0a 2d 39 0d 0a 2d 39 0d 0a 0d 0a 73 6b 69  9..-9..-9....ski
38210 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
38220 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
38230 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
38240 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
38250 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
38260 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
38270 4c 20 63 6f 72 30 2e 63 6f 6c 31 20 63 6f 6c 30  L cor0.col1 col0
38280 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
38290 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
382a0 2e 63 6f 6c 32 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d  .col2, col1..---
382b0 2d 0d 0a 34 34 0d 0a 35 37 0d 0a 36 0d 0a 0d 0a  -..44..57..6....
382c0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
382d0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f  .SELECT ALL + co
382e0 72 30 2e 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  r0.col0 FROM tab
382f0 31 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  1 cor0 GROUP BY 
38300 63 6f 72 30 2e 63 6f 6c 32 2c 20 63 6f 6c 32 2c  cor0.col2, col2,
38310 20 63 6f 72 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d   cor0.col0..----
38320 0d 0a 32 32 0d 0a 32 38 0d 0a 38 32 0d 0a 0d 0a  ..22..28..82....
38330 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
38340 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
38350 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20   + col0 AS col0 
38360 46 52 4f 4d 20 74 61 62 32 20 47 52 4f 55 50 20  FROM tab2 GROUP 
38370 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31  BY col0..----..1
38380 35 0d 0a 39 31 0d 0a 39 32 0d 0a 0d 0a 71 75 65  5..91..92....que
38390 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
383a0 4c 45 43 54 20 41 4c 4c 20 2b 20 31 20 41 53 20  LECT ALL + 1 AS 
383b0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41  col2 FROM tab1 A
383c0 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
383d0 63 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  cor0.col1..----.
383e0 0a 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a 71 75 65 72  .1..1..1....quer
383f0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
38400 45 43 54 20 2b 20 74 61 62 32 2e 63 6f 6c 30 20  ECT + tab2.col0 
38410 2a 20 74 61 62 32 2e 63 6f 6c 30 20 2b 20 2b 20  * tab2.col0 + + 
38420 37 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  72 AS col1 FROM 
38430 74 61 62 32 20 47 52 4f 55 50 20 42 59 20 74 61  tab2 GROUP BY ta
38440 62 32 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 32  b2.col0..----..2
38450 39 37 0d 0a 38 33 35 33 0d 0a 38 35 33 36 0d 0a  97..8353..8536..
38460 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
38470 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 38 32  t..SELECT ALL 82
38480 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
38490 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
384a0 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 38 32 0d  .col2..----..82.
384b0 0a 38 32 0d 0a 38 32 0d 0a 0d 0a 6f 6e 6c 79 69  .82..82....onlyi
384c0 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
384d0 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
384e0 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
384f0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 37 38 38  wsort label-1788
38500 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
38510 54 20 63 6f 72 30 2e 63 6f 6c 30 20 2a 20 2d 20  T cor0.col0 * - 
38520 63 6f 72 30 2e 63 6f 6c 31 20 2b 20 63 6f 72 30  cor0.col1 + cor0
38530 2e 63 6f 6c 31 20 44 49 56 20 2d 20 39 20 63 6f  .col1 DIV - 9 co
38540 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
38550 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f  cor0 GROUP BY co
38560 6c 30 2c 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  l0, col1..----..
38570 2d 31 33 32 0d 0a 2d 31 36 30 32 0d 0a 2d 33 36  -132..-1602..-36
38580 31 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  12....skipif mys
38590 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
385a0 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
385b0 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
385c0 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
385d0 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
385e0 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
385f0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
38600 62 65 6c 2d 31 37 38 38 0d 0a 53 45 4c 45 43 54  bel-1788..SELECT
38610 20 44 49 53 54 49 4e 43 54 20 63 6f 72 30 2e 63   DISTINCT cor0.c
38620 6f 6c 30 20 2a 20 2d 20 63 6f 72 30 2e 63 6f 6c  ol0 * - cor0.col
38630 31 20 2b 20 63 6f 72 30 2e 63 6f 6c 31 20 2f 20  1 + cor0.col1 / 
38640 2d 20 39 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  - 9 col0 FROM ta
38650 62 31 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b1 AS cor0 GROUP
38660 20 42 59 20 63 6f 6c 30 2c 20 63 6f 6c 31 0d 0a   BY col0, col1..
38670 2d 2d 2d 2d 0d 0a 2d 31 33 32 0d 0a 2d 31 36 30  ----..-132..-160
38680 32 0d 0a 2d 33 36 31 32 0d 0a 0d 0a 71 75 65 72  2..-3612....quer
38690 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
386a0 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 2b  ECT ALL + col1 +
386b0 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   - col1 FROM tab
386c0 31 20 47 52 4f 55 50 20 42 59 20 74 61 62 31 2e  1 GROUP BY tab1.
386d0 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30  col1..----..0..0
386e0 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..0....query I r
386f0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
38700 4c 4c 20 74 61 62 32 2e 63 6f 6c 31 20 46 52 4f  LL tab2.col1 FRO
38710 4d 20 74 61 62 32 20 47 52 4f 55 50 20 42 59 20  M tab2 GROUP BY 
38720 74 61 62 32 2e 63 6f 6c 31 20 48 41 56 49 4e 47  tab2.col1 HAVING
38730 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d   NULL IS NULL..-
38740 2d 2d 2d 0d 0a 34 31 0d 0a 35 39 0d 0a 36 31 0d  ---..41..59..61.
38750 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
38760 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
38770 4e 43 54 20 2d 20 36 30 20 46 52 4f 4d 20 74 61  NCT - 60 FROM ta
38780 62 30 20 47 52 4f 55 50 20 42 59 20 63 6f 6c 32  b0 GROUP BY col2
38790 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 30 0d 0a 0d 0a 71  ..----..-60....q
387a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
387b0 53 45 4c 45 43 54 20 34 33 20 46 52 4f 4d 20 74  SELECT 43 FROM t
387c0 61 62 30 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab0 GROUP BY tab
387d0 30 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 34 33  0.col2..----..43
387e0 0d 0a 34 33 0d 0a 34 33 0d 0a 0d 0a 71 75 65 72  ..43..43....quer
387f0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
38800 45 43 54 20 41 4c 4c 20 2d 20 33 36 20 46 52 4f  ECT ALL - 36 FRO
38810 4d 20 74 61 62 31 20 47 52 4f 55 50 20 42 59 20  M tab1 GROUP BY 
38820 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 36 0d  col0..----..-36.
38830 0a 2d 33 36 0d 0a 2d 33 36 0d 0a 0d 0a 71 75 65  .-36..-36....que
38840 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
38850 4c 45 43 54 20 2d 20 35 32 20 46 52 4f 4d 20 74  LECT - 52 FROM t
38860 61 62 31 20 47 52 4f 55 50 20 42 59 20 74 61 62  ab1 GROUP BY tab
38870 31 2e 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35  1.col2..----..-5
38880 32 0d 0a 2d 35 32 0d 0a 2d 35 32 0d 0a 0d 0a 71  2..-52..-52....q
38890 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
388a0 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 72 30 2e  SELECT ALL cor0.
388b0 63 6f 6c 30 20 2a 20 63 6f 72 30 2e 63 6f 6c 30  col0 * cor0.col0
388c0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
388d0 62 30 20 41 53 20 63 6f 72 30 20 47 52 4f 55 50  b0 AS cor0 GROUP
388e0 20 42 59 20 63 6f 72 30 2e 63 6f 6c 30 2c 20 63   BY cor0.col0, c
388f0 6f 72 30 2e 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  or0.col1..----..
38900 31 38 34 39 0d 0a 36 37 36 0d 0a 36 38 38 39 0d  1849..676..6889.
38910 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
38920 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 38 30 20  rt..SELECT - 80 
38930 2d 20 2b 20 63 6f 72 30 2e 63 6f 6c 32 20 46 52  - + cor0.col2 FR
38940 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
38950 47 52 4f 55 50 20 42 59 20 63 6f 72 30 2e 63 6f  GROUP BY cor0.co
38960 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 38 0d 0a  l2..----..-138..
38970 2d 31 35 39 0d 0a 2d 31 36 37 0d 0a 0d 0a 71 75  -159..-167....qu
38980 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
38990 45 4c 45 43 54 20 41 4c 4c 20 2b 20 35 36 20 2a  ELECT ALL + 56 *
389a0 20 2d 20 63 6f 72 30 2e 63 6f 6c 32 20 41 53 20   - cor0.col2 AS 
389b0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
389c0 53 20 63 6f 72 30 20 47 52 4f 55 50 20 42 59 20  S cor0 GROUP BY 
389d0 63 6f 6c 32 2c 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d  col2, col2..----
389e0 0d 0a 2d 32 35 32 30 0d 0a 2d 33 39 37 36 0d 0a  ..-2520..-3976..
389f0 2d 34 34 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -448....query I 
38a00 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
38a10 44 49 53 54 49 4e 43 54 20 33 35 20 46 52 4f 4d  DISTINCT 35 FROM
38a20 20 74 61 62 30 20 47 52 4f 55 50 20 42 59 20 74   tab0 GROUP BY t
38a30 61 62 30 2e 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0.col0..----..
38a40 33 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  35....query I ro
38a50 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
38a60 39 32 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f  92 FROM tab2 GRO
38a70 55 50 20 42 59 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d  UP BY col0..----
38a80 0d 0a 39 32 0d 0a 39 32 0d 0a 39 32 0d 0a 0d 0a  ..92..92..92....
38a90 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
38aa0 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
38ab0 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
38ac0 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
38ad0 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
38ae0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
38af0 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 63 6f 6c 31   ALL + col2 col1
38b00 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
38b10 72 30 20 47 52 4f 55 50 20 42 59 20 63 6f 72 30  r0 GROUP BY cor0
38b20 2e 63 6f 6c 32 2c 20 63 6f 72 30 2e 63 6f 6c 30  .col2, cor0.col0
38b30 0d 0a 2d 2d 2d 2d 0d 0a 34 35 0d 0a 37 31 0d 0a  ..----..45..71..
38b40 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  8....skipif post
38b50 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
38b60 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
38b70 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
38b80 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
38b90 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
38ba0 45 4c 45 43 54 20 2d 20 74 61 62 31 2e 63 6f 6c  ELECT - tab1.col
38bb0 31 20 2d 20 2d 20 74 61 62 31 2e 63 6f 6c 31 20  1 - - tab1.col1 
38bc0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 47  col2 FROM tab1 G
38bd0 52 4f 55 50 20 42 59 20 74 61 62 31 2e 63 6f 6c  ROUP BY tab1.col
38be0 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30  1..----..0..0..0
38bf0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
38c00 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
38c10 2d 20 63 6f 6c 31 20 2b 20 74 61 62 32 2e 63 6f  - col1 + tab2.co
38c20 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 47 52 4f  l1 FROM tab2 GRO
38c30 55 50 20 42 59 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d  UP BY col1..----
38c40 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65  ..0..0..0....que
38c50 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
38c60 4c 45 43 54 20 2b 20 38 38