{"id":18185,"date":"2023-08-01T13:52:52","date_gmt":"2023-08-01T13:52:52","guid":{"rendered":"https:\/\/soloweb.com.br\/blog\/?p=18185"},"modified":"2023-08-05T11:39:16","modified_gmt":"2023-08-05T11:39:16","slug":"conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube","status":"publish","type":"post","link":"https:\/\/soloweb.com.br\/blog\/2023\/08\/01\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\/","title":{"rendered":"Conjuntos de agrupamentos ou GROUPING SETS do Postgres &#8211; ROLLUP &#038; CUBE"},"content":{"rendered":"\n<p>Na dica de hoje, voc\u00ea aprender\u00e1 sobre conjuntos de agrupamento e como usar a GROUPING SETS, cl\u00e1usula PostgreSQL para gerar v\u00e1rios conjuntos de agrupamento em uma consulta.<\/p>\n\n\n\n<p>Precisando de um servidor de banco de dados ou de gerenciamento e administra\u00e7\u00e3o do seu servidor, entre em contato conosco, temos o prazer em ajudar. Acesse <a href=\"https:\/\/soloweb.com.br\" class=\"ek-link\">soloweb.com.br<\/a><\/p>\n\n\n\n<p>O PostgreSQL \u00e9 um dos melhores bancos de dados OLTP ( OLTP = processamento de transa\u00e7\u00f5es online) do mundo. No entanto, ele pode fazer mais do que apenas OLTP. O PostgreSQL oferece muitos recursos adicionais relevantes para uma carga de trabalho mais no estilo OLAP. Um desses recursos \u00e9 chamado de \u201cGROUPING SETS\u201d.<\/p>\n\n\n\n<p>Antes de mergulharmos nos detalhes, vamos criar alguns dados de amostra que voc\u00ea pode carregar facilmente em seu banco de dados SQL:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-- Cria\u00e7\u00e3o da tabela exemplo\nCREATE TABLE vendas\n(\n    cidade\ttext,\n    produto   \ttext,\n    ano         int,\n    qtd_venda   numeric\n);\n \n-- Carga de daods de exemplo\nINSERT INTO vendas VALUES\n    ('Jo\u00e3o Pessoa', 'Produto AAA', 2020, 12),\n    ('Jo\u00e3o Pessoa', 'Produto AAA', 2021, 14),\n    ('Jo\u00e3o Pessoa', 'Produto BBB', 2020, 54),\n    ('Jo\u00e3o Pessoa', 'Produto BBB', 2021, 57),\n    ('S\u00e3o Paulo', 'Produto AAA', 2020, 34),\n    ('S\u00e3o Paulo', 'Produto AAA', 2021, 29),\n    ('S\u00e3o Paulo', 'Produto BBB', 2020, 19),\n    ('S\u00e3o Paulo', 'Produto BBB', 2021, 22),\n    ('Rio de Janeiro', 'Produto AAA', 2020, 99),\n    ('Rio de Janeiro', 'Produto AAA', 2021, 103),\n    ('Rio de Janeiro', 'Produto BBB', 2020, 81),\n    ('Rio de Janeiro', 'Produto BBB', 2021, 90)\n;<\/code><\/pre>\n\n\n\n<p>Vamos deixa a estrutura da tabela e dados o mais simples poss\u00edvel para evitar problemas de compatibilidade de vers\u00f5es.<\/p>\n\n\n\n<p>Vamos come\u00e7ar com uma agrega\u00e7\u00e3o simples:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"384\" height=\"265\" src=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image.png\" alt=\"\" class=\"wp-image-18186\" srcset=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image.png 384w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-300x207.png 300w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-130x90.png 130w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-150x104.png 150w\" sizes=\"auto, (max-width: 384px) 100vw, 384px\" \/><\/figure>\n\n\n\n<p>N\u00e3o h\u00e1 muito o que dizer aqui, al\u00e9m do fato de que obteremos uma soma para cada grupo. No entanto, h\u00e1 um pouco de uma discuss\u00e3o filos\u00f3fica acontecendo. \u201cGROUP BY 1\u201d significa basicamente \u201cGROUP BY cidade\u201d, que \u00e9 o equivalente \u00e0 primeira coluna da cl\u00e1usula SELECT. Portanto \u201cGROUP BY cidade\u201d e \u201cGROUP BY 1\u201d s\u00e3o a mesma coisa:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"374\" height=\"368\" src=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-1.png\" alt=\"\" class=\"wp-image-18187\" srcset=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-1.png 374w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-1-300x295.png 300w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-1-150x148.png 150w\" sizes=\"auto, (max-width: 374px) 100vw, 374px\" \/><\/figure>\n\n\n\n<p>Claro, isso tamb\u00e9m funciona com mais de uma coluna. No entanto, quero apontar outra coisa. Considere o seguinte exemplo:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"351\" height=\"321\" src=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-2.png\" alt=\"\" class=\"wp-image-18188\" srcset=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-2.png 351w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-2-300x274.png 300w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-2-150x137.png 150w\" sizes=\"auto, (max-width: 351px) 100vw, 351px\" \/><\/figure>\n\n\n\n<p>A maioria das pessoas agrupa por uma coluna. Em alguns casos, pode fazer sentido agrupar por uma express\u00e3o. No meu caso, estamos formando grupos em tempo real (= um grupo para &#8220;SP&#8221; e outro para vendas fora de &#8220;SP&#8221;). Esse recurso geralmente \u00e9 subestimado. No entanto, \u00e9 \u00fatil em muitos cen\u00e1rios do mundo real. Lembre-se de que todas as coisas que voc\u00ea ver\u00e1 tamb\u00e9m funcionam com express\u00f5es, o que significa que um agrupamento mais flex\u00edvel \u00e9 poss\u00edvel.<\/p>\n\n\n\n<p><strong>GROUPING SETS \/ CONJUNTOS DE AGRUPAMENTO: Os blocos de constru\u00e7\u00e3o b\u00e1sicos<\/strong><\/p>\n\n\n\n<p>GROUP BY transformar\u00e1 cada entrada distinta em uma coluna em um grupo. \u00c0s vezes, voc\u00ea pode querer fazer mais agrupamentos de uma s\u00f3 vez. Por que isso \u00e9 necess\u00e1rio? Suponha que voc\u00ea esteja processando uma tabela de 10 TB. Claramente, a leitura desses dados costuma ser o fator limitante em termos de desempenho. Portanto, ler os dados uma vez e produzir mais resultados de uma s\u00f3 vez \u00e9 atraente. Isso \u00e9 exatamente o que voc\u00ea pode fazer com GROUP BY GROUP SETS. Suponha que queremos produzir dois resultados ao mesmo tempo:<\/p>\n\n\n\n<p>GRUPO POR cidade<br>GRUPO POR produto<\/p>\n\n\n\n<p>Veja como funciona:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"389\" height=\"344\" src=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-3.png\" alt=\"\" class=\"wp-image-18189\" srcset=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-3.png 389w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-3-300x265.png 300w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-3-150x133.png 150w\" sizes=\"auto, (max-width: 389px) 100vw, 389px\" \/><\/figure>\n\n\n\n<p>Nesse caso, o PostgreSQL simplesmente anexa os resultados. As tr\u00eas primeiras linhas representam \u201cGROUP BY cidade\u201d. As pr\u00f3ximas duas linhas cont\u00eam o resultado de \u201cGROUP BY produto\u201d. Logicamente, \u00e9 o equivalente \u00e0 seguinte consulta:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"456\" height=\"412\" src=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-4.png\" alt=\"\" class=\"wp-image-18190\" srcset=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-4.png 456w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-4-300x271.png 300w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-4-150x136.png 150w\" sizes=\"auto, (max-width: 456px) 100vw, 456px\" \/><\/figure>\n\n\n\n<p>No entanto, a vers\u00e3o GROUPING SETS \u00e9 muito mais eficiente porque s\u00f3 precisa ler os dados uma vez.&nbsp;<\/p>\n\n\n\n<p><strong>ROLLUP: Adicionando a \u201clinha de fundo\u201d<\/strong><\/p>\n\n\n\n<p>Ao criar relat\u00f3rios, muitas vezes voc\u00ea precisar\u00e1 do \u201cresultado final\u201d que resume o que foi mostrado na tabela. A maneira de fazer isso no SQL \u00e9 usar \u201cGROUP BY ROLLUP\u201d:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"386\" height=\"459\" src=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-5.png\" alt=\"\" class=\"wp-image-18191\" srcset=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-5.png 386w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-5-252x300.png 252w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-5-150x178.png 150w\" sizes=\"auto, (max-width: 386px) 100vw, 386px\" \/><\/figure>\n\n\n\n<p>O PostgreSQL injetar\u00e1 algumas linhas no resultado. Como voc\u00ea pode ver, \u201cJo\u00e3o Pessoa\u201d retorna 3 e n\u00e3o apenas 2 linhas. A entrada \u201cproduto = NULL\u201d foi adicionada por ROLLUP. Cont\u00e9m a soma de todas as vendas argentinas (116 + 27 = 137). Linhas adicionais s\u00e3o injetadas para ambos as outras cidade. Por fim, uma linha \u00e9 adicionada para as vendas gerais em todas as cidade.<\/p>\n\n\n\n<p>Freq\u00fcentemente, essas entradas NULL n\u00e3o s\u00e3o o que as pessoas desejam ver, portanto, pode fazer sentido substitu\u00ed-las por algum outro tipo de entrada. A maneira de fazer isso \u00e9 usar uma subselect que verifica a entrada NULL e faz a substitui\u00e7\u00e3o. Veja como funciona:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"450\" height=\"546\" src=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-6.png\" alt=\"\" class=\"wp-image-18192\" srcset=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-6.png 450w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-6-247x300.png 247w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-6-150x182.png 150w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/figure>\n\n\n\n<p>Como voc\u00ea pode ver, todas as entradas NULL foram substitu\u00eddas por \u201cTOTAL\u201d, que em muitos casos \u00e9 a maneira mais desej\u00e1vel de exibir esses dados.<\/p>\n\n\n\n<p><strong>CUBE: Criando cubos de dados no PostgreSQL de forma eficiente<\/strong><\/p>\n\n\n\n<p>ROLLUP \u00e9 \u00fatil se voc\u00ea quiser adicionar o \u201cbottom line\u201d. No entanto, muitas vezes voc\u00ea deseja ver todas as combina\u00e7\u00f5es de cidades e produtos. GROUP BY CUBE far\u00e1 exatamente isso:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"372\" height=\"478\" src=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-7.png\" alt=\"\" class=\"wp-image-18193\" srcset=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-7.png 372w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-7-233x300.png 233w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-7-150x193.png 150w\" sizes=\"auto, (max-width: 372px) 100vw, 372px\" \/><\/figure>\n\n\n\n<p>Neste caso, temos todas as combina\u00e7\u00f5es. Tecnicamente, \u00e9 o mesmo que: GROUP BY cidade + GROUP BY produto + GROUP BY cidade_produto + GROUP BY (). Poder\u00edamos fazer isso usando mais do que apenas uma instru\u00e7\u00e3o, mas faz\u00ea-lo de uma s\u00f3 vez \u00e9 mais f\u00e1cil \u2013 e muito mais eficiente.<\/p>\n\n\n\n<p>Novamente, valores NULL foram adicionados para indicar v\u00e1rios n\u00edveis de agrega\u00e7\u00e3o. <\/p>\n\n\n\n<p><strong>Conjuntos de agrupamento: planos de execu\u00e7\u00e3o<\/strong><\/p>\n\n\n\n<p>Os conjuntos de agrupamento n\u00e3o apenas reescrevem a consulta para transform\u00e1-la em um UNION ALL \u2013 na verdade, h\u00e1 um c\u00f3digo espec\u00edfico no mecanismo de banco de dados para executar essas agrega\u00e7\u00f5es.<\/p>\n\n\n\n<p>O que voc\u00ea ver\u00e1 \u00e9 um \u201cMixedAggregate\u201d que \u00e9 capaz de agregar em v\u00e1rios n\u00edveis ao mesmo tempo. Aqui est\u00e1 um exemplo:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"620\" height=\"395\" src=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-9.png\" alt=\"\" class=\"wp-image-18197\" srcset=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-9.png 620w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-9-300x191.png 300w, https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/image-9-150x96.png 150w\" sizes=\"auto, (max-width: 620px) 100vw, 620px\" \/><\/figure>\n\n\n\n<p>Observar o MixedAggregate tamb\u00e9m revela quais agrega\u00e7\u00f5es s\u00e3o executadas como parte do conjunto de agrupamento.<\/p>\n\n\n\n<p>Em geral, os conjuntos de agrupamento s\u00e3o um recurso muito interessante que geralmente \u00e9 desconhecido ou negligenciado. \u00c9 altamente recomend\u00e1vel usar esse material incr\u00edvel para acelerar suas agrega\u00e7\u00f5es. \u00c9 particularmente \u00fatil se voc\u00ea estiver lidando com um grande conjunto de dados.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Na dica de hoje, voc\u00ea aprender\u00e1 sobre conjuntos de agrupamento e como usar a GROUPING SETS, cl\u00e1usula PostgreSQL para gerar<\/p>\n","protected":false},"author":4,"featured_media":18195,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","footnotes":""},"categories":[249,302,303],"tags":[414,415,412,413],"class_list":["post-18185","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-banco-de-dados","category-destaque-principal","category-destaque-secundario","tag-cube","tag-grouping","tag-postgres","tag-rollup"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Conjuntos de agrupamentos ou GROUPING SETS do Postgres - ROLLUP &amp; CUBE - SOLOWEB Tecnologia<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/soloweb.com.br\/blog\/2023\/08\/01\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Conjuntos de agrupamentos ou GROUPING SETS do Postgres - ROLLUP &amp; CUBE - SOLOWEB Tecnologia\" \/>\n<meta property=\"og:description\" content=\"Na dica de hoje, voc\u00ea aprender\u00e1 sobre conjuntos de agrupamento e como usar a GROUPING SETS, cl\u00e1usula PostgreSQL para gerar\" \/>\n<meta property=\"og:url\" content=\"https:\/\/soloweb.com.br\/blog\/2023\/08\/01\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\/\" \/>\n<meta property=\"og:site_name\" content=\"SOLOWEB Tecnologia\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-01T13:52:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-05T11:39:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/WhatsApp-Image-2023-08-01-at-10.49.03.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"940\" \/>\n\t<meta property=\"og:image:height\" content=\"787\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Carlos Rolim\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlos Rolim\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2023\\\/08\\\/01\\\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2023\\\/08\\\/01\\\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\\\/\"},\"author\":{\"name\":\"Carlos Rolim\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/b10ff5bc260b411c2d82b19fad8ae3f1\"},\"headline\":\"Conjuntos de agrupamentos ou GROUPING SETS do Postgres &#8211; ROLLUP &#038; CUBE\",\"datePublished\":\"2023-08-01T13:52:52+00:00\",\"dateModified\":\"2023-08-05T11:39:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2023\\\/08\\\/01\\\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\\\/\"},\"wordCount\":890,\"publisher\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2023\\\/08\\\/01\\\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/WhatsApp-Image-2023-08-01-at-10.49.03.jpeg\",\"keywords\":[\"CUBE\",\"GROUPING\",\"postgres\",\"ROLLUP\"],\"articleSection\":[\"Banco de dados\",\"Destaque Principal\",\"Destaque Secund\u00e1rio\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2023\\\/08\\\/01\\\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\\\/\",\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2023\\\/08\\\/01\\\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\\\/\",\"name\":\"Conjuntos de agrupamentos ou GROUPING SETS do Postgres - ROLLUP & CUBE - SOLOWEB Tecnologia\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2023\\\/08\\\/01\\\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2023\\\/08\\\/01\\\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/WhatsApp-Image-2023-08-01-at-10.49.03.jpeg\",\"datePublished\":\"2023-08-01T13:52:52+00:00\",\"dateModified\":\"2023-08-05T11:39:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2023\\\/08\\\/01\\\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2023\\\/08\\\/01\\\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2023\\\/08\\\/01\\\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\\\/#primaryimage\",\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/WhatsApp-Image-2023-08-01-at-10.49.03.jpeg\",\"contentUrl\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/WhatsApp-Image-2023-08-01-at-10.49.03.jpeg\",\"width\":940,\"height\":787},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/2023\\\/08\\\/01\\\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Conjuntos de agrupamentos ou GROUPING SETS do Postgres &#8211; ROLLUP &#038; CUBE\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/\",\"name\":\"SOLOWEB Tecnologia\",\"description\":\"SOLOWEB Tecnologia\",\"publisher\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#organization\",\"name\":\"SOLOWEB Tecnologia\",\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/cropped-solo.png\",\"contentUrl\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/cropped-solo.png\",\"width\":341,\"height\":94,\"caption\":\"SOLOWEB Tecnologia\"},\"image\":{\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/b10ff5bc260b411c2d82b19fad8ae3f1\",\"name\":\"Carlos Rolim\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/avatar_user_4_1674993909-96x96.png\",\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/avatar_user_4_1674993909-96x96.png\",\"contentUrl\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/avatar_user_4_1674993909-96x96.png\",\"caption\":\"Carlos Rolim\"},\"sameAs\":[\"http:\\\/\\\/carlosrolim.com\"],\"url\":\"https:\\\/\\\/soloweb.com.br\\\/blog\\\/author\\\/carlos\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Conjuntos de agrupamentos ou GROUPING SETS do Postgres - ROLLUP & CUBE - SOLOWEB Tecnologia","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/soloweb.com.br\/blog\/2023\/08\/01\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\/","og_locale":"pt_BR","og_type":"article","og_title":"Conjuntos de agrupamentos ou GROUPING SETS do Postgres - ROLLUP & CUBE - SOLOWEB Tecnologia","og_description":"Na dica de hoje, voc\u00ea aprender\u00e1 sobre conjuntos de agrupamento e como usar a GROUPING SETS, cl\u00e1usula PostgreSQL para gerar","og_url":"https:\/\/soloweb.com.br\/blog\/2023\/08\/01\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\/","og_site_name":"SOLOWEB Tecnologia","article_published_time":"2023-08-01T13:52:52+00:00","article_modified_time":"2023-08-05T11:39:16+00:00","og_image":[{"width":940,"height":787,"url":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/WhatsApp-Image-2023-08-01-at-10.49.03.jpeg","type":"image\/jpeg"}],"author":"Carlos Rolim","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Carlos Rolim","Est. tempo de leitura":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/soloweb.com.br\/blog\/2023\/08\/01\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\/#article","isPartOf":{"@id":"https:\/\/soloweb.com.br\/blog\/2023\/08\/01\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\/"},"author":{"name":"Carlos Rolim","@id":"https:\/\/soloweb.com.br\/blog\/#\/schema\/person\/b10ff5bc260b411c2d82b19fad8ae3f1"},"headline":"Conjuntos de agrupamentos ou GROUPING SETS do Postgres &#8211; ROLLUP &#038; CUBE","datePublished":"2023-08-01T13:52:52+00:00","dateModified":"2023-08-05T11:39:16+00:00","mainEntityOfPage":{"@id":"https:\/\/soloweb.com.br\/blog\/2023\/08\/01\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\/"},"wordCount":890,"publisher":{"@id":"https:\/\/soloweb.com.br\/blog\/#organization"},"image":{"@id":"https:\/\/soloweb.com.br\/blog\/2023\/08\/01\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\/#primaryimage"},"thumbnailUrl":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/WhatsApp-Image-2023-08-01-at-10.49.03.jpeg","keywords":["CUBE","GROUPING","postgres","ROLLUP"],"articleSection":["Banco de dados","Destaque Principal","Destaque Secund\u00e1rio"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/soloweb.com.br\/blog\/2023\/08\/01\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\/","url":"https:\/\/soloweb.com.br\/blog\/2023\/08\/01\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\/","name":"Conjuntos de agrupamentos ou GROUPING SETS do Postgres - ROLLUP & CUBE - SOLOWEB Tecnologia","isPartOf":{"@id":"https:\/\/soloweb.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/soloweb.com.br\/blog\/2023\/08\/01\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\/#primaryimage"},"image":{"@id":"https:\/\/soloweb.com.br\/blog\/2023\/08\/01\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\/#primaryimage"},"thumbnailUrl":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/WhatsApp-Image-2023-08-01-at-10.49.03.jpeg","datePublished":"2023-08-01T13:52:52+00:00","dateModified":"2023-08-05T11:39:16+00:00","breadcrumb":{"@id":"https:\/\/soloweb.com.br\/blog\/2023\/08\/01\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/soloweb.com.br\/blog\/2023\/08\/01\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/soloweb.com.br\/blog\/2023\/08\/01\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\/#primaryimage","url":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/WhatsApp-Image-2023-08-01-at-10.49.03.jpeg","contentUrl":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/08\/WhatsApp-Image-2023-08-01-at-10.49.03.jpeg","width":940,"height":787},{"@type":"BreadcrumbList","@id":"https:\/\/soloweb.com.br\/blog\/2023\/08\/01\/conjuntos-de-agrupamentos-ou-grouping-sets-do-postgres-rollup-cube\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/soloweb.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Conjuntos de agrupamentos ou GROUPING SETS do Postgres &#8211; ROLLUP &#038; CUBE"}]},{"@type":"WebSite","@id":"https:\/\/soloweb.com.br\/blog\/#website","url":"https:\/\/soloweb.com.br\/blog\/","name":"SOLOWEB Tecnologia","description":"SOLOWEB Tecnologia","publisher":{"@id":"https:\/\/soloweb.com.br\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/soloweb.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/soloweb.com.br\/blog\/#organization","name":"SOLOWEB Tecnologia","url":"https:\/\/soloweb.com.br\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/soloweb.com.br\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/04\/cropped-solo.png","contentUrl":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2022\/04\/cropped-solo.png","width":341,"height":94,"caption":"SOLOWEB Tecnologia"},"image":{"@id":"https:\/\/soloweb.com.br\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/soloweb.com.br\/blog\/#\/schema\/person\/b10ff5bc260b411c2d82b19fad8ae3f1","name":"Carlos Rolim","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/01\/avatar_user_4_1674993909-96x96.png","url":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/01\/avatar_user_4_1674993909-96x96.png","contentUrl":"https:\/\/soloweb.com.br\/blog\/wp-content\/uploads\/2023\/01\/avatar_user_4_1674993909-96x96.png","caption":"Carlos Rolim"},"sameAs":["http:\/\/carlosrolim.com"],"url":"https:\/\/soloweb.com.br\/blog\/author\/carlos\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/18185","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/comments?post=18185"}],"version-history":[{"count":2,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/18185\/revisions"}],"predecessor-version":[{"id":18198,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/18185\/revisions\/18198"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/media\/18195"}],"wp:attachment":[{"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/media?parent=18185"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/categories?post=18185"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soloweb.com.br\/blog\/wp-json\/wp\/v2\/tags?post=18185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}