SUMMARIZATION bis

The SUMMARIZE operator has been part of Tutorial D since its inception. With the introduction of image relations, however, that operator became logically redundant—and while there might be reasons (perhaps pedagogic ones) to retain it, the fact is that most summarizations can be more succinctly expressed by means of EXTEND.[105] Recall Example SX1 from the previous section (“For each supplier, get the supplier number and a count of the number of parts supplied”). The SUMMARIZE formulation looked like this:

     SUMMARIZE SP PER ( S { SNO } ) : { PCT := COUNT ( PNO ) }

Here by contrast is an equivalent EXTEND formulation:

     EXTEND S { SNO } : { PCT := COUNT ( !!SP ) }

(Since the combination {SNO,PNO} is a key for relvar SP, there’s no need to project the image relation on {PNO} before computing the count.) As the example suggests, EXTEND is certainly another context in which image relations make sense; in fact, they’re arguably even more useful in this context than they are in WHERE clauses.

The rest of this section consists of more examples. I’ve continued the numbering from the examples in the section IMAGE RELATIONS bis.

Example 6: For each supplier, get supplier details and total shipment quantity, taken over all shipments for the supplier in question.

     EXTEND S : { TOTQ := SUM ( !!SP , QTY ) }

Example 7: For each supplier, get supplier details and total, maximum, and minimum shipment quantity, taken over all shipments for the supplier in question.

 EXTEND S : { TOTQ := SUM ...

Get SQL and Relational Theory, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.