

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Cláusula CONNECT BY
<a name="r_CONNECT_BY_clause"></a>

A cláusula CONNECT BY especifica a relação entre as linhas em uma hierarquia. Você pode usar CONNECT BY para selecionar linhas em uma ordem hierárquica unindo a tabela a ela mesma e processando os dados hierárquicos. Por exemplo, você pode usá-la para percorrer recursivamente um organograma e listar dados.

As consultas hierárquicas são processadas na seguinte ordem:

1. Se a cláusula FROM tiver uma união, ela será processada primeiro.

1. A cláusula CONNECT BY é avaliada.

1. A cláusula WHERE é avaliada.

## Sintaxe
<a name="r_CONNECT_BY_clause-synopsis"></a>

```
[START WITH start_with_conditions]
CONNECT BY connect_by_conditions
```

**nota**  
Embora START e CONNECT não sejam palavras reservadas, use identificadores delimitados (aspas duplas) ou AS se estiver usando START e CONNECT como aliases de tabela em sua consulta para evitar falhas no runtime.

```
SELECT COUNT(*)
FROM Employee "start"
CONNECT BY PRIOR id = manager_id
START WITH name = 'John'
```

```
SELECT COUNT(*)
FROM Employee AS start
CONNECT BY PRIOR id = manager_id
START WITH name = 'John'
```

## Parâmetros
<a name="r_CONNECT_BY_parameters"></a>

 *start\_with\_conditions*   
Condições que especificam a(s) linha(s) raiz da hierarquia

 *connect\_by\_conditions*   
Condições que especificam a relação entre as linhas pais e as linhas filhas da hierarquia. Pelo menos uma condição deve ser qualificada com o operador unário ` ` usado para se referir à linha pai.  

```
PRIOR column = expression
-- or
expression > PRIOR column
```

## Operadores
<a name="r_CONNECT_BY_operators"></a>

É possível usar os seguintes operadores na consulta CONNECT BY.

 *LEVEL*   
Pseudocoluna que retorna o nível da linha atual na hierarquia. Retorna 1 para a linha raiz, 2 para a filha da linha raiz e assim por diante.

 *PRIOR*   
Operador unário que avalia a expressão da linha pai da linha atual na hierarquia.

## Exemplos
<a name="r_CONNECT_BY_example"></a>

O exemplo a seguir é uma consulta CONNECT BY que retorna o número de funcionários subordinados direta ou indiretamente a John, até o máximo de 4 níveis. 

```
SELECT id, name, manager_id
FROM employee
WHERE LEVEL < 4
START WITH name = 'John'
CONNECT BY PRIOR id = manager_id;
```

A seguir é o resultado da consulta.

```
id      name      manager_id
------+----------+--------------
  101     John        100
  102     Jorge       101
  103     Kwaku       101
  110     Liu         101
  201     Sofía       102
  106     Mateo       102
  110     Nikki       103
  104     Paulo       103
  105     Richard     103
  120     Saanvi      104
  200     Shirley     104
  205     Zhang       104
```

 Definição da tabela para esse exemplo: 

```
CREATE TABLE employee (
   id INT,
   name VARCHAR(20),
   manager_id INT
   );
```

 A seguir estão as linhas inseridas na tabela. 

```
INSERT INTO employee(id, name, manager_id)  VALUES
(100, 'Carlos', null),
(101, 'John', 100),
(102, 'Jorge', 101),
(103, 'Kwaku', 101),
(110, 'Liu', 101),
(106, 'Mateo', 102),
(110, 'Nikki', 103),
(104, 'Paulo', 103),
(105, 'Richard', 103),
(120, 'Saanvi', 104),
(200, 'Shirley', 104),
(201, 'Sofía', 102),
(205, 'Zhang', 104);
```

A seguir está um organograma para o departamento de John.

![Um organograma do departamento de John.](http://docs.aws.amazon.com/pt_br/redshift/latest/dg/images/org-chart.png)
