W3C home > Mailing lists > Public > public-qt-comments@w3.org > October 2010

[Bug 10980] New: [XQuery11] incorrect group by example

From: <bugzilla@jessica.w3.org>
Date: Tue, 05 Oct 2010 22:40:47 +0000
To: public-qt-comments@w3.org
Message-ID: <bug-10980-523@http.www.w3.org/Bugs/Public/>
http://www.w3.org/Bugs/Public/show_bug.cgi?id=10980

           Summary: [XQuery11] incorrect group by example
           Product: XPath / XQuery / XSLT
           Version: Member-only Editors Drafts
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: normal
          Priority: P2
         Component: XQuery 1.1
        AssignedTo: jonathan.robie@redhat.com
        ReportedBy: andrew.eisenberg@us.ibm.com
         QAContact: public-qt-comments@w3.org
             Group: XSLXQuery_WG


The final example in section 3.9.7, Group By Clause, is:

o When writing a query that includes a group by clause, it is important to
remember that, in each post-grouping tuple, each grouping variable is bound to
a single atomic value (a grouping key), and all other variables are bound to
sequences of items derived from all the pre-grouping tuples from which the
group was formed. The following example illustrates how to avoid a possible
pitfall in writing grouping queries.

let $high-price := 1000
for $p in $products[price > $high-price]
let $category := $p/category
group by $category
return
   <category name="{$category}">
      {fn:count($p)} products have price greater than {$high-price}.
   </category>


The statement is  incorrect.  The grouping keys are atomized values, but not
the grouping  variables.  We  say,  "In  the  post-grouping tuple, each
grouping variable  is  bound to the value of that variable in one of the
pre-grouping tuples  from  which  the group is derived." Just before an
editorial note on this topic.

The first sentence of the example should be removed.

If we wish to show that the grouping variables are not atomized, then we might
add an example such as:

let $high-price := 1000
return
   for $p in $products[price > $high-price]
   let $category := $p/category
   group by $category
   return
      <result>
         {
         $category,
         <comment>
            {fn:count($p)} products have price greater than {$high-price}.
         </comment>
         }
      </result>

The result of this query might contain the following element:

<result>
   <category name="Men's Wear"/>
   <comment>3 products have price greater than 1000.</comment>
</result>

-- 
Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
Received on Tuesday, 5 October 2010 22:40:49 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 15:45:44 UTC