## Syntax ```mermaid %%{init: { 'theme': 'base', 'flowchart': { 'padding': '7', 'nodeSpacing': '20', 'rankSpacing': '20' }, 'themeVariables': { 'fontSize': '11px', 'fontFamily': 'Arial' } }}%% flowchart LR zipAggregateFunction_start((START)) zipAggregateFunction_start --> zipAggregateFunction_0_0[ZIP]:::quoted zipAggregateFunction_0_0 --> zipAggregateFunction_0_1["("]:::quoted zipAggregateFunction_0_1 --> zipAggregateFunction_0_2[expressionList] zipAggregateFunction_0_2 --> zipAggregateFunction_0_3[")"]:::quoted zipAggregateFunction_0_3 --> zipAggregateFunction_end((END)) ``` ## Purpose Group function which combines the binary documents of a group into one ZIP archive. The first expression provides the binary contents (`blob`) of each document; the second expression provides the file name of the document within the archive. Occurrences of `null` contents are skipped; when solely `null` contents are present, the outcome is `null`. Returns: the ZIP archive as `blob`. ## Examples The following example combines the invoice PDF documents of all customers into one ZIP archive, for instance to hand over to an auditor; the outcome is one `blob` containing a file per invoice: ```sql select zip(ivc.pdf_document, ivc.invoice_number || '.pdf') invoices_archive from invoices ivc ``` The following example combines the invoice PDF documents per customer into one ZIP archive per customer, for instance to send each customer a copy of the open invoices, and names each archive after the customer: ```sql select ivc.customer_name , zip(ivc.pdf_document, ivc.invoice_number || '.pdf') invoices_archive from invoices ivc group by ivc.customer_name ```