{"id":674,"date":"2026-05-22T10:00:24","date_gmt":"2026-05-22T13:00:24","guid":{"rendered":"https:\/\/jrtx.com.br\/blog\/2026\/05\/22\/aula-9-funcoes-de-agregacao-group-by-e-having-no-postgresql\/"},"modified":"2026-05-22T10:00:24","modified_gmt":"2026-05-22T13:00:24","slug":"aula-9-funcoes-de-agregacao-group-by-e-having-no-postgresql","status":"publish","type":"post","link":"https:\/\/jrtx.com.br\/blog\/2026\/05\/22\/aula-9-funcoes-de-agregacao-group-by-e-having-no-postgresql\/","title":{"rendered":"Aula 9: Fun\u00e7\u00f5es de agrega\u00e7\u00e3o, GROUP BY e HAVING no PostgreSQL"},"content":{"rendered":"<p>Nesta aula, vamos explorar as <strong>fun\u00e7\u00f5es de agrega\u00e7\u00e3o<\/strong>, o comando <strong>GROUP BY<\/strong> e a cl\u00e1usula <strong>HAVING<\/strong> no PostgreSQL, essenciais para a an\u00e1lise de dados em grandes conjuntos. Voc\u00ea entender\u00e1 como resumir dados e extrair informa\u00e7\u00f5es valiosas, pr\u00e1ticas fundamentais para a gest\u00e3o eficiente de bancos de dados. Esta habilidade \u00e9 essencial para otimizar a execu\u00e7\u00e3o de queries e melhorar a interpreta\u00e7\u00e3o de dados, sendo frequentemente utilizada em projetos como os realizados pela JRT Technology Solutions.<\/p>\n<h3>O que voc\u00ea vai aprender nesta aula<\/h3>\n<ul>\n<li>O que s\u00e3o fun\u00e7\u00f5es de agrega\u00e7\u00e3o e como utiliz\u00e1-las<\/li>\n<li>Como funcionam o GROUP BY e a cl\u00e1usula HAVING<\/li>\n<li>Exemplos pr\u00e1ticos aplicados em queries<\/li>\n<li>A import\u00e2ncia desses conceitos em an\u00e1lises de dados<\/li>\n<\/ul>\n<h3>Fun\u00e7\u00f5es de agrega\u00e7\u00e3o: Conceitos e Usos<\/h3>\n<p>As <strong>fun\u00e7\u00f5es de agrega\u00e7\u00e3o<\/strong> s\u00e3o \u00fateis para calcular um \u00fanico valor a partir de um conjunto de valores, como somar ou contar registros. As fun\u00e7\u00f5es mais comuns incluem <strong>COUNT<\/strong>, <strong>SUM<\/strong>, <strong>AVG<\/strong>, <strong>MIN<\/strong> e <strong>MAX<\/strong>. Por exemplo, ao analisar uma tabela de vendas, voc\u00ea pode usar SUM para somar os pre\u00e7os ou COUNT para contar o n\u00famero de transa\u00e7\u00f5es.<\/p>\n<h3>Como usar GROUP BY no PostgreSQL<\/h3>\n<p>O comando <strong>GROUP BY<\/strong> \u00e9 usado para organizar dados em grupos com base em uma ou mais colunas. Quando combinado com fun\u00e7\u00f5es de agrega\u00e7\u00e3o, ele permite resumir informa\u00e7\u00f5es detalhadas. Imagine agrupar vendas por regi\u00e3o para obter o total de vendas por \u00e1rea geogr\u00e1fica: este \u00e9 o t\u00edpico uso do GROUP BY.<\/p>\n<pre><code>\nSELECT region, SUM(price)\nFROM sales\nGROUP BY region;\n<\/code><\/pre>\n<p>Nesse exemplo, a query est\u00e1 agrupando a tabela <strong>sales<\/strong> pela coluna <strong>region<\/strong> e calcula a soma dos valores na coluna <strong>price<\/strong> para cada regi\u00e3o. Este \u00e9 o tipo de t\u00e9cnica que nossos especialistas na JRT Technology Solutions utilizam diariamente para extrair insights valiosos de grandes bases de dados.<\/p>\n<h3>Usando a cl\u00e1usula HAVING para filtragem avan\u00e7ada<\/h3>\n<p>A cl\u00e1usula <strong>HAVING<\/strong> \u00e9 utilizada para filtrar resultados agregados, similar ao <strong>WHERE<\/strong>, mas aplicada ap\u00f3s a agrega\u00e7\u00e3o dos dados. Voc\u00ea pode usar HAVING para, por exemplo, mostrar apenas as regi\u00f5es com um total de vendas acima de um determinado valor.<\/p>\n<pre><code>\nSELECT region, SUM(price)\nFROM sales\nGROUP BY region\nHAVING SUM(price) > 10000;\n<\/code><\/pre>\n<p>Esta query n\u00e3o s\u00f3 agrupa por <strong>region<\/strong>, mas tamb\u00e9m filtra os agrupamentos para mostrar apenas aqueles onde a soma das vendas excede 10.000. Assim, a cl\u00e1usula HAVING \u00e9 crucial para realizar an\u00e1lises mais refinadas e direcionadas.<\/p>\n<h3>Por que as Fun\u00e7\u00f5es de Agrega\u00e7\u00e3o, GROUP BY e HAVING s\u00e3o Importantes?<\/h3>\n<p>O uso combinado de <strong>fun\u00e7\u00f5es de agrega\u00e7\u00e3o<\/strong>, <strong>GROUP BY<\/strong> e <strong>HAVING<\/strong> permite uma an\u00e1lise detalhada e eficiente de grandes volumes de dados. Esses conceitos ajudam a otimizar consultas e s\u00e3o determinantes em relat\u00f3rios gerenciais e dashboards anal\u00edticos, semelhante ao que praticamos em nossos projetos na JRT Technology Solutions.<\/p>\n<ul>\n<li><strong>Otimiza\u00e7\u00e3o: <\/strong>Reduz o volume de dados a ser analisado, aumentando a efici\u00eancia de consultas.<\/li>\n<li><strong>Precis\u00e3o: <\/strong>Permite foco em resultados espec\u00edficos atrav\u00e9s de filtros e agrupamentos.<\/li>\n<\/ul>\n<h3>Resumo da Aula 9<\/h3>\n<p>Nesta aula, introduzimos as <strong>fun\u00e7\u00f5es de agrega\u00e7\u00e3o<\/strong>, o uso do <strong>GROUP BY<\/strong> para agrupar dados e a cl\u00e1usula <strong>HAVING<\/strong> para filtros avan\u00e7ados p\u00f3s-agrega\u00e7\u00e3o. Entender esses conceitos \u00e9 fundamental para qualquer profissional de TI que lida com an\u00e1lise de dados e otimiza\u00e7\u00e3o de queries SQL. Na pr\u00f3xima aula, vamos aprofundar nosso conhecimento em jun\u00e7\u00f5es de tabelas no PostgreSQL, construindo queries ainda mais complexas e funcionais.<\/p>\n<div style=\"margin:48px 0 32px;padding:32px 24px;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:16px;text-align:center;\">\n<p style=\"margin:0 0 8px;font-size:17px;color:#111827;font-weight:700;\">Quer aprender na pr\u00e1tica com especialistas?<\/p>\n<p style=\"margin:0 0 24px;font-size:15px;color:#1f2937;font-weight:400;\">A JRT Technology Solutions oferece treinamentos e implementa\u00e7\u00e3o de PostgreSQL para equipes corporativas.<\/p>\n<p>  <a href=\"https:\/\/api.whatsapp.com\/send\/?phone=5521980606699&#038;text=Ol%C3%A1%21+Tenho+interesse+no+treinamento+de+PostgreSQL.&#038;type=phone_number&#038;app_absent=0\"\n     target=\"_blank\" rel=\"noopener noreferrer\"\n     style=\"display:inline-flex;align-items:center;gap:12px;background:#25D366;color:#ffffff;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:16px;font-weight:600;padding:14px 28px;border-radius:100px;text-decoration:none;box-shadow:0 4px 12px rgba(37,211,102,0.4);letter-spacing:0.01em;\"><br \/>\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"#ffffff\">\n      <path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z\"\/>\n    <\/svg><br \/>\n    Falar no WhatsApp<br \/>\n  <\/a>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Aprenda como usar fun\u00e7\u00f5es de agrega\u00e7\u00e3o no PostgreSQL com GROUP BY e HAVING para otimizar suas consultas SQL nesta completa Aula 9. Descubra mais!<\/p>\n","protected":false},"author":1,"featured_media":673,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":0,"footnotes":""},"categories":[75],"tags":[88,1159,1157,1158,1063,1160],"class_list":["post-674","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","tag-banco-de-dados-relacional","tag-clausula-having","tag-funcoes-de-agregacao-postgresql","tag-group-by-postgresql","tag-otimizacao-de-consultas-sql","tag-sql-avancado"],"_links":{"self":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/posts\/674","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/comments?post=674"}],"version-history":[{"count":0,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/posts\/674\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/media\/673"}],"wp:attachment":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/media?parent=674"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/categories?post=674"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/tags?post=674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}