Em alguns casos, você pode encontrar casos em que precisa filtrar registros de um banco de dados usando a cláusula WHERE. Isso permite especificar uma condição específica e aplicar apenas as ações definidas a linhas que correspondem às condições.
Outro caso de uso típico é quando você precisa aplicar um filtro a um grupo de registros como uma unidade. É aí que entra a cláusula de ter. É semelhante à cláusula onde, mas pode ser aplicada a um resultado agregado.
Qual é a diferença?
Há apenas uma diferença entre o lugar e ter cláusulas:
- A cláusula onde é aplicada a linhas individuais em uma tabela.
- Por outro lado, a cláusula de ter é aplicada a um grupo de linhas que atendem à condição especificada. Você também pode usar a cláusula de ter em uma função agregada.
Onde exemplo de cláusula
Considere a tabela de funcionários que contêm dados de amostra, conforme fornecido nas declarações abaixo:
Criar funcionários da tabela (
Id Id Serial Primary Key,
Full_name Varchar (255),
Email Varchar (255),
Departamento Varchar (100),
start_date data,
BOOL ativo,
Categoria Varchar (50)
);
Insira nos funcionários (Full_Name, email, departamento, start_date, ativo, categoria)
Valores
('Meghan Edwards', '
[email protected] ',' Development de jogo ',' 2016-06-22 ', verdadeiro,' dev-g1 '),
('Sam Davis', '
[email protected] ',' Development de jogo ',' 2014-01-04 ', false,' dev-g1 '),
('Taylor Miller', '
[email protected] ',' Development Game ',' 2019-10-06 ', True,' Dev-G1 '),
('Wilson Smitty', '
[email protected] ',' Database Developer ',' 2016-12-23 ', true,' dev-db1 '),
('Barbara Moore', '
[email protected] ',' Desenvolvedor de banco de dados ',' 2015-12-23 ', true,' dev-db1 '),
('Raj Chan', '
[email protected] ',' Database Developer ',' 2017-12-23 ', false,' dev-db1 '),
('Susan Brown', '
[email protected] ',' DevOps Engineer ',' 2011-12-23 ', True,' Dev-OPS1 '),
('Marial Anderson', '
[email protected] ',' DevOps Engineer ',' 2015-12-23 ', True,' Dev-OPS1 '),
('Nancy Thomas', '
[email protected] ',' DevOps Engineer ',' 2014-12-23 ', false,' Dev-OPS1 ');
Podemos usar o Selecionar com a cláusula onde buscar as linhas onde a categoria é igual a 'Dev-OPS-1'.
Um exemplo de expressão é como mostrado:
Selecione *
De funcionários
Onde categoria = 'dev-OPS1';
A consulta acima é aplicada em linha por linha e retorna o conjunto de resultados como mostrado:
Tendo um exemplo de cláusula
Como afirmado, a cláusula de ter é aplicada no agregado. Por exemplo, considere a tabela com dados de amostra, como mostrado na consulta abaixo:
Crie tabela youtube_stats (
Id Serial,
canal_id varchar (50),
video_id Varchar (50),
Views_Count int
);
Inserir no youtube_stats (canal_id, video_id, views_count)
Valores
('chan1', 'vid1', 100000),
('chan1', 'vid2', 500000),
('chan2', 'vid1', 400000),
('chan2', 'vid2', 1000000),
('chan3', 'vid1', 800000),
('chan4', 'vid1', 262529);
Podemos usar os grupos agregados da cláusula como mostrado:
Selecione ID,
Canal_id,
Video_id,
SUM (Views_Count) como Total_Views
Do youtube_stats
Grupo por canal_id
Tendo total_views> = 100000
A consulta acima deve retornar apenas os elementos onde a soma é maior ou igual à condição acima.