| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> comp.databases.theory -> Re: What is Aggregation? Re: grouping in tuple relational calculus
Mikito Harakiri wrote:
> "Jan Hidders" <jan.hidders_at_REMOVETHIS.pandora.be> wrote in message
> news:MO9Rd.14260$fH2.1142837_at_phobos.telenet-ops.be...
>
>> Mikito Harakiri wrote: >> >>> So, what is the defining property of an aggregate? >> >> The defining property is that it is a function over bags. So if you >> want to base it on a binary operation this operation has to >> symmetric and associative.
Hmmm, yes, but list aggregation is a bit cumbersome in the context of the relational model. There it is easy to identify a bag of domain values, just give me a relation and point to one of its columns. For lists you would probably also need to indicate how you would like to order the tuples in the relation, and that may not be obvious.
On the other hand, if you have lists, why require associativity and not simply consider all functions over lists as aggregation functions?
It's all a matter of definition, of course, and hence ultimately meaningless.
>>> Next, is sum the only aggregate that can't be expressed by >>> standard means?
>> Actually there is an infinite number of them, unless you want to >> limit the term artificially to those that are found in a certain >> query language.
It means that you have to be careful with arguments like "I only know a few and therefore it must be rare". There may be a whole universe out there of stuff that people would like to be able to do and you have never heard about. Looking in math books is not a good way to find out what people typically want to do with their database.
>>> If it is, then don't you think that justification for an >>> aggregation syntax is too thin? >> >> If the users can understand and use it easily and it can be >> implemented efficiently then that is all the justification that is >> needed. Mathematical elegance is only circumstantial evidence here.
?? I never said we should.
![]() |
![]() |