🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #13822

sql: group by

#13822
From: Bart Vandewoestyne
Date: Sun, 27 May 2001 15:51
91 lines
4003 bytes
Stel volgende tabellen:

PROJECT:
	PNAME, ___PNUMBER___, PLOCATION, DNUM

WORKS_ON:
	___ESSN___, ___PNO___, HOURS

De ___onderstreepte___ attributen zijn/vormen de sleutel.

SQL> select * from project;

PNAME              PNUMBER PLOCATION             DNUM
--------------- ---------- --------------- ----------
ProductX                 1 Bellaire                 5
ProductY                 2 Sugarland                5
ProductZ                 3 Houston                  5
Computerization         10 Stafford                 4
Reorganization          20 Houston                  1
Newbenefits             30 Stafford                 4

SQL> select * from works_on;

ESSN             PNO      HOURS
--------- ---------- ----------
123456789          1       32.5
123456789          2        7.5
666884444          3         40
453453453          1         20
453453453          2         20
333445555          2         10
333445555          3         10
333445555         10         10
333445555         20         10
999887777         30         30
999887777         10         10

ESSN             PNO      HOURS
--------- ---------- ----------
987987987         10         35
987987987         30          5
987654321         30         20
987654321         20         15
888665555         20          0


Ik wil nu volgende query doen:

For each project, retrieve the project number, the project name, and
the number of employees who work on that project.

Die querie ziet er als volgt uit:

SELECT 	 PNUMBER, PNAME, COUNT(*)
FROM 	 PROJECT, WORKS_ON
WHERE 	 PNUMBER=PNO
GROUP BY PNUMBER, PNAME

Nu is mijn vraag: waarom moet die PNAME ook nog in de GROUP BY
clause?  Als ik ze per project wil, dan zou ik redeneren dat groeperen
op projectnummer (PNUMBER) voldoende is?  Ik snap niet waarom die
PNAME er dan ook nog bij moet.

Volgende zaak lukt bv. niet:

SQL> select pnumber, pname, count(*)
  2  from project, works_on
  3  where pnumber=pno
  4  group by pnumber;
select pnumber, pname, count(*)
                *
ERROR at line 1:
ORA-00979: not a GROUP BY expression

Ik heb een vaag vermoeden dat het te maken heeft met het feit dat
PNAME geen sleutelattribuut is, maar ik geraak er precies niet uit...
Kan iemand hier een verhelderende uitleg over geven?

Greetzzz,
mc303

PS: Dit komt uit het boek 'Fundamentals of Database Systems, Third
Edition - Elsmari, Navathe' voor diegenen die het zouden willen weten
;-)

-- 
Ing. Bart Vandewoestyne			 Bart.Vandewoestyne@pandora.be
Hugo Verrieststraat 48			       GSM: +32 (0)478 397 697
B-8550 Zwevegem			 http://users.pandora.be/vandewoestyne
----------------------------------------------------------------------
"Any fool can know, the point is to understand." - Albert Einstein
Technical Details
Message-ID: <3B11229E.9335CC19@pandora.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!sn-xit-03!supernews.com!cyclone-sf.pbi.net!63.208.208.143!feed2.onemain.com!feed1.onemain.com!newsfeeds.belnet.be!naxos.belnet.be!news.belnet.be!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,91d94af356f134d1,start
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2001-05-27 08:54:02 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!sn-xit-03!supernews.com!cyclone-sf.pbi.net!63.208.208.143!feed2.onemain.com!feed1.onemain.com!newsfeeds.belnet.be!naxos.belnet.be!news.belnet.be!not-for-mail
From: Bart Vandewoestyne <Bart.Vandewoestyne@pandora.be>
Newsgroups: be.comp.programming
Subject: sql: group by
Date: Sun, 27 May 2001 17:51:58 +0200
Organization: MyHome
Lines: 91
Message-ID: <3B11229E.9335CC19@pandora.be>
NNTP-Posting-Host: seven.kulnet.kuleuven.ac.be
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Trace: naxos.belnet.be 990978748 29310 134.58.127.12 (27 May 2001 15:52:28 GMT)
X-Complaints-To: abuse@belnet.be
NNTP-Posting-Date: Sun, 27 May 2001 15:52:28 +0000 (UTC)
X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.4.5 i686)
X-Accept-Language: nl-BE, nl, en, de
Cache-Post-Path: seven.kulnet.kuleuven.ac.be!unknown@kn-10-0-53-046.kotnet.kuleuven.ac.be
X-Cache: nntpcache 2.4.0b5 (see http://www.nntpcache.org/)