Re: Getting the latest unique items - Mailing list pgsql-sql

From A.M.
Subject Re: Getting the latest unique items
Date
Msg-id 9352B184-0D90-11D7-BA9C-0030657192DA@cmu.edu
Whole thread Raw
In response to Re: Getting the latest unique items  (Tomasz Myrta <jasiek@klaster.net>)
Responses Re: Getting the latest unique items  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: Getting the latest unique items  (Tomasz Myrta <jasiek@klaster.net>)
List pgsql-sql
When I try to run the following query:

select distinct on(student_gradedmaterial.id) student_gradedmaterial.id 
from coursesection_student,student_gradedmaterial WHERE 
gradedmaterialid=1 AND 
coursesection_student.studentid=student_gradedmaterial.studentid AND 
coursesectionid=1 and score is not null order by submittime desc;

I get the following error:

ERROR:  SELECT DISTINCT ON expressions must match initial ORDER BY 
expressions

Should I use GROUP BY somehow?
SELECT DISTINCT ON (student_gradedmaterial.id) 
student_gradedmaterial.id from 
coursesection_student,student_gradedmaterial where gradedmaterialid=1 
and coursesection_student.studentid=student_gradedmaterial.studentid 
and coursectionid=1 and score is not null having max(big subselect of 
max times);

?

The relevant schema follows:
CREATE TABLE coursesection_student (       coursesectionid INT8 REFERENCES coursesection,       studentid INT8
REFERENCESstudent,       status INT4 DEFAULT 0 NOT NULL, --2 switched, 1 dropped, 0 
 
enrolled       touch BOOL DEFAULT 'true',       UNIQUE(coursesectionid,studentid)
);
CREATE TABLE coursesection_ca(       coursesectionid INT8 REFERENCES coursesection,       caid INT8 REFERENCES ca
);
CREATE TABLE gradedmaterial (       id SERIAL PRIMARY KEY,       name TEXT,       visible BOOLEAN DEFAULT 'f',
openforsubmissionBOOLEAN DEFAULT 'f',       description TEXT,       webpage TEXT,       predefcomments TEXT,
weightINT4,       restrictedfiletypes TEXT,       duetime TIMESTAMP
 
);

CREATE TABLE coursesection_gradedmaterial(       gradedmaterialid INT8 REFERENCES gradedmaterial,       coursesectionid
INT8REFERENCES coursesection
 
);

CREATE TABLE student_gradedmaterial(       id SERIAL,       studentid INT8 REFERENCES student,       gradedmaterialid
INT8REFERENCES gradedmaterial,       caid INT8 REFERENCES ca,       score INT4,       comments TEXT,       submittime
TIMESTAMP,      gradedtime TIMESTAMP,       file OID,       emailtostudent BOOLEAN DEFAULT 'f',       suffix VARCHAR(6)
DEFAULT'.zip'
 
);
On Wednesday, December 11, 2002, at 01:36  PM, Tomasz Myrta wrote:

> I'm not sure if I understood your problem,
> but did you try with "distinct on"?
> select distinct on (id)
> from
> ...
> order by submittime desc
>
> Regards,
> Tomasz Myrta
>
>
> A.M. wrote:
>
> > I have a table as follows:
> > CREATE TABLE student_gradedmaterial(
> >     id SERIAL,
> >     studentid INT8 REFERENCES student,
> >     gradedmaterialid INT8 REFERENCES gradedmaterial,
> >     caid INT8 REFERENCES ca,
> >     ...
> >     submittime TIMESTAMP,
> >            gradedtime TIMESTAMP,
> >     score INT4
> > );
> >
> > Every time a student submits a homework, one new entry in the table 
> is
> > created. I know how to grab the latest version based on the 
> submittime
> > but naturally, I'd like to be able to count how many homeworks are
> > graded and ungraded (ungraded means score is NULL). This smells of a
> > subselect:
> >
> > graded (grab row count):
> > SELECT UNIQUE id FROM student_gradedmaterial WHERE EXISTS (SELECT the
> > latest unique submissions);
> > or:
> > SELECT COUNT(score) FROM student_gradedmaterial WHERE 
> gradedmaterialid=X
> > AND submittime = MAX(SELECT submittime FROM student_gradedmaterial 
> WHERE
> > gradedmaterialid=X);
> >
> > (Sub-selects just make my head explode.) Any hints for me? Thanks.
> >  ><><><><><><><><><
> > AgentM
> > agentm@cmu.edu
> >
> >
> >
> > ---------------------------(end of 
> broadcast)---------------------------
> > TIP 2: you can get off all lists at once with the unregister command
> >    (send "unregister YourEmailAddressHere" to 
> majordomo@postgresql.org)
> >
>
>
>
>
>><><><><><><><><><
AgentM
agentm@cmu.edu





pgsql-sql by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: convert NULL into a value
Next
From: "Waheed Rahuman"
Date:
Subject: Primary Key Help !