                                           ╭←─────────────←╮                
             ╔═════════════════════════╗   ↓ ┌───────────┐ ↑ ┌──────┐       
           ╭←╢ common-table-expression ╟─┬─┴←┤ RECURSIVE ├←┴─┤ WITH ├←┬───┼┤
           ↓ ╚═════════════════════════╝ ↑   └───────────┘   └──────┘ ↓     
           │            ┌───┐            │                            │     
           ├→───────────┤ , ├───────────→╯                            │     
           ↓            └───┘                                         │     
           ╰→────────────────────────────────────────────────────────→┤     
  ┏━╸select-core╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ↓     
  ┃                                                                 ┃ │     
  ┃            ╔═══════════════╗                    ┌────────┐      ┃ │     
  ┃          ╭←╢ result-column ╟─┬─┬←────────────←┬─┤ SELECT ├──←┬──╂←┤     
  ┃          ↓ ╚═══════════════╝ ↑ ↑ ┌──────────┐ ↓ └────────┘   ↓  ┃ ↑     
  ┃          │       ┌───┐       │ ├←┤ DISTINCT ├←┤              │  ┃ │     
  ┃          ├→──────┤ , ├──────→╯ │ └──────────┘ │              │  ┃ │     
  ┃          │       └───┘         │      ┌─────┐ │              │  ┃ │     
  ┃          │                     ╰←─────┤ ALL ├←╯              │  ┃ │     
  ┃          ↓                            └─────┘                │  ┃ │     
  ┃          ╰→───────────────────────────────────────────────→╮ │  ┃ │     
  ┃                         ╔═══════════════════╗     ┌──────┐ ↓ │  ┃ │     
  ┃                     ╭←┬─╢ table-or-subquery ╟─┬←┬─┤ FROM ├←┤ │  ┃ │     
  ┃                     │ ↓ ╚═══════════════════╝ ↑ ↓ └──────┘ │ │  ┃ │     
  ┃                     │ │         ┌───┐         │ │          │ │  ┃ │     
  ┃                     │ ╰→────────┤ , ├────────→╯ │          │ │  ┃ │     
  ┃                     │           └───┘           │          │ │  ┃ │     
  ┃                     │           ╔═════════════╗ │          │ │  ┃ │     
  ┃                     ├←──────────╢ join-clause ╟←╯          │ │  ┃ │     
  ┃                     ↓           ╚═════════════╝            │ │  ┃ │     
  ┃                     ╰→────────────────────────────────────→┤ │  ┃ │     
  ┃                                      ╭←───────────────────←↓ │  ┃ │     
  ┃       ╔══════╗   ┌────┐  ┌───────┐   ↓ ╔══════╗  ┌───────┐ │ │  ┃ │     
  ┃     ╭←╢ expr ╟─┬─┤ BY ├──┤ GROUP ├←┬─┴←╢ expr ╟──┤ WHERE ├←╯ │  ┃ │     
  ┃     ↓ ╚══════╝ ↑ └────┘  └───────┘ ↓   ╚══════╝  └───────┘   │  ┃ │     
  ┃     │  ┌───┐   │                   │                         │  ┃ │     
  ┃     ├→─┤ , ├──→╯                   │                         │  ┃ │     
  ┃     ↓  └───┘                       ↓                         │  ┃ │     
  ┃     ╰→─────────────────────────────┴→─────────────────────→╮ │  ┃ │     
  ┃                                       ╔══════╗  ┌────────┐ ↓ │  ┃ │     
  ┃                                     ╭←╢ expr ╟──┤ HAVING ├←┤ │  ┃ │     
  ┃                                     ↓ ╚══════╝  └────────┘ │ │  ┃ │     
  ┃                                     ╰→────────────────────→┤ │  ┃ │     
  ┃  ╭←───────────────────────────────────────────────────────←↓ │  ┃ │     
  ┃  ↓   ╔═════════════╗  ┌────┐  ╔═════════════╗   ┌────────┐ │ │  ┃ │     
╭←╂──┼←┬─╢ window-defn ╟──┤ AS ├──╢ window-name ╟─┬─┤ WINDOW ├←╯ │  ┃ │     
↓ ┃  ↑ ↓ ╚═════════════╝  └────┘  ╚═════════════╝ ↑ └────────┘   │  ┃ │     
│ ┃  │ │                  ┌───┐                   │              │  ┃ │     
│ ┃  │ ╰→─────────────────┤ , ├──────────────────→╯              │  ┃ │     
│ ┃  │                    └───┘                                  │  ┃ │     
│ ┃  │                     ┌───┐   ╔══════╗   ┌───┐   ┌────────┐ │  ┃ │     
│ ┃  ╰←──────────────────┬─┤ ) ├─┬─╢ expr ╟─┬─┤ ( ├─┬─┤ VALUES ├←╯  ┃ │     
│ ┃                      ↓ └───┘ ↓ ╚══════╝ ↑ └───┘ ↑ └────────┘    ┃ │     
│ ┃                      │       │  ┌───┐   │       │               ┃ │     
│ ┃                      │       ╰→─┤ , ├──→╯       │               ┃ │     
│ ┃                      │          └───┘           │               ┃ │     
│ ┃                      │          ┌───┐           │               ┃ │     
│ ┃                      ╰→─────────┤ , ├──────────→╯               ┃ │     
│ ┃                                 └───┘                           ┃ │     
│ ┃                                                                 ┃ │     
│ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ │     
│                        ╔═══════════════════╗                        │     
├→───────────────────────╢ compound-operator ╟───────────────────────→╯     
↓                        ╚═══════════════════╝                              
╰→───────────────────────────────────────────────────────────────────→╮     
                                ╔═══════════════╗   ┌────┐  ┌───────┐ ↓     
                              ╭←╢ ordering-term ╟─┬─┤ BY ├──┤ ORDER ├←┤     
                              ↓ ╚═══════════════╝ ↑ └────┘  └───────┘ │     
                              │       ┌───┐       │                   │     
                              ├→──────┤ , ├──────→╯                   │     
                              ↓       └───┘                           │     
                              ╰→─────────────────────────────────────→┤     
                         ╭←←───────────────────←┬────────────────────←↓     
                         ↓ ╔══════╗  ┌────────┐ ↑ ╔══════╗  ┌───────┐ │     
                    ├┼───┼←╢ expr ╟──┤ OFFSET ├←┼─╢ expr ╟──┤ LIMIT ├←╯     
                         ↑ ╚══════╝  └────────┘ ↓ ╚══════╝  └───────┘       
                         │      ╔══════╗  ┌───┐ │                           
                         ╰←─────╢ expr ╟──┤ , ├←╯                           
                                ╚══════╝  └───┘                             
