Return-Path: Delivered-To: apmail-db-derby-user-archive@www.apache.org Received: (qmail 35904 invoked from network); 30 Apr 2008 14:14:23 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 30 Apr 2008 14:14:23 -0000 Received: (qmail 39840 invoked by uid 500); 30 Apr 2008 14:14:05 -0000 Delivered-To: apmail-db-derby-user-archive@db.apache.org Received: (qmail 39760 invoked by uid 500); 30 Apr 2008 14:14:05 -0000 Mailing-List: contact derby-user-help@db.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: List-Id: Reply-To: "Derby Discussion" Delivered-To: mailing list derby-user@db.apache.org Received: (qmail 39546 invoked by uid 99); 30 Apr 2008 14:14:05 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 30 Apr 2008 07:14:03 -0700 X-ASF-Spam-Status: No, hits=-1.0 required=10.0 tests=RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: local policy) Received: from [192.18.43.132] (HELO sca-es-mail-1.sun.com) (192.18.43.132) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 30 Apr 2008 14:13:10 +0000 Received: from fe-sfbay-09.sun.com ([192.18.43.129]) by sca-es-mail-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id m3UEDUGa007443 for ; Wed, 30 Apr 2008 07:13:30 -0700 (PDT) Received: from conversion-daemon.fe-sfbay-09.sun.com by fe-sfbay-09.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) id <0K050090165U3U00@fe-sfbay-09.sun.com> (original mail from Richard.Hillegas@Sun.COM) for derby-user@db.apache.org; Wed, 30 Apr 2008 07:13:30 -0700 (PDT) Received: from richard-hillegas-computer.local ([129.150.17.115]) by fe-sfbay-09.sun.com (Sun Java System Messaging Server 6.2-8.04 (built Feb 28 2007)) with ESMTPSA id <0K05002LI66HHR20@fe-sfbay-09.sun.com> for derby-user@db.apache.org; Wed, 30 Apr 2008 07:13:30 -0700 (PDT) Date: Wed, 30 Apr 2008 07:13:29 -0700 From: Rick Hillegas Subject: Re: median query In-reply-to: <5d1501c8aaa4$c8347a60$6e00a8c0@desktop2> Sender: Richard.Hillegas@Sun.COM To: Derby Discussion Message-id: <48187E89.60501@sun.com> MIME-version: 1.0 Content-type: text/plain; format=flowed; charset=ISO-8859-1 Content-transfer-encoding: 7BIT References: <48181493.3080503@atreides.ro> <5d1501c8aaa4$c8347a60$6e00a8c0@desktop2> User-Agent: Thunderbird 2.0.0.12 (Macintosh/20080213) X-Virus-Checked: Checked by ClamAV on apache.org Hi Stephen, You may be able to write a user function to help. There's an example of a median-calculating user function in the "scores" demo. For an example of how to write and use this function, search for "getMedianTestScore" in the demo subtree of your Derby distribution (it should be available from release 10.3.1.4 onward). Hope this helps, -Rick Stephen Ince wrote: > I was trying to write a query that would return the median. > I tried the following approached. > 1) sql window functions, row_number. > Can use this because derby can not on a column. > > 2) Cross-join technique. > This fails because derby does not have good case support. I am > getting null pointer exception. > > SELECT P1.weight > FROM Parts AS P1, Parts AS P2 > GROUP BY P1.weight > HAVING SUM(CASE WHEN P2.weight <= P1.weight > THEN 1 ELSE 0 END) >> = ((COUNT(*) + 1) / 2) > AND SUM(CASE WHEN P2.weight >= P1.weight > THEN 1 ELSE 0 END) >> = (COUNT(*)/2 + 1); > > > Has anyone been success in writing a sql median query. > > Steve