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