Thread: SQL QUERIES
Hi can somebody help me with some queries for my problem database. I want to report: 1. Which device/software that (practically) never shows up some problems. 2. A top 10 of the most occuring problems 3. The need of more time that a employee needs to solve a problem over the average solving time. I am just beginning to study sql so my knowledge is very low. :( Can some body help me with these queries? Greets, Menno Pieper
> I want to report: > 1. Which device/software that (practically) never shows up some problems. select item from items_tbl where item not in (select distinct item from problem_tbl); (there may be more efficient ways to form this query) > 2. A top 10 of the most occuring problems select problem, count(problem) as num from problem_tbl group by problem order by num desc limit 10; > 3. The need of more time that a employee needs to solve a problem over the > average solving time. It is expensive to calculate an average from scratch each time you want to compare a row with it. So I would suggest having a table which holds the expected times for each problem (or problem type), which you can then adjust as needed. begin; delete from timing_tbl; select problem, avg(solution_time) as solution_time into timing_tbl from problem_tbl group by problem; end; select employee as stupid from problem_tbl p, timing_tbl t where (t.problem = p.problem) and (p.solution_time > 1.5*t.solution_time); hth - Thomas
I have a tabl called 'unit' with a field 'room' of type character varying(20). I want to change the type to character varying(40). How do I do this without affecting any data in the table. Thanksâ -- David A Dickson david.dickson@mail.mcgill.ca
You can either: a) create table unittemp as select field1, field2, cast(room as varchar(20)), ..., fieldn from unit; drop table unit; alter table unittemp rename to unit; b) pg_dump -t unit [dbname] > unit.pgsql edit unit.pgsql and change varchar(20) to varchar(40) and add a line to beginning of file "drop table unit" pgsql [dbname] < unit.pgsql Frank At 12:03 PM 2/4/02 -0500, David A Dickson wrote: >I have a tabl called 'unit' with a field 'room' of type character >varying(20). I want to change the type to character varying(40). >How do I do this without affecting any data in the table. > >Thanksâ > >-- >David A Dickson >david.dickson@mail.mcgill.ca > > >---------------------------(end of broadcast)--------------------------- >TIP 2: you can get off all lists at once with the unregister command > (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) >
>You can either: > >a) create table unittemp as select field1, field2, cast(room as >varchar(20)), ..., fieldn from unit; > drop table unit; > alter table unittemp rename to unit; > >b) pg_dump -t unit [dbname] > unit.pgsql > edit unit.pgsql and change varchar(20) to varchar(40) and add a line to >beginning of file "drop table unit" > pgsql [dbname] < unit.pgsql > >Frank > >At 12:03 PM 2/4/02 -0500, David A Dickson wrote: > >I have a tabl called 'unit' with a field 'room' of type character > >varying(20). I want to change the type to character varying(40). > >How do I do this without affecting any data in the table. Has anyone discovered any workaround to the lack of a full ALTER TABLE that preserves the OID for each row? I am finding that for insurance I have to assign each table an SERIAL of my own to create an autoincremented ID that I can control - because using OID as a key requires me to update the key throughout the database if I have to drop the table. Elaine Lindelef
You could add "-o" option to pg_dump in option (b) to preserve oid's. At 11:08 AM 2/4/02 -0800, Elaine Lindelef wrote: >>You can either: >> >>a) create table unittemp as select field1, field2, cast(room as >>varchar(20)), ..., fieldn from unit; >> drop table unit; >> alter table unittemp rename to unit; >> >>b) pg_dump -t unit [dbname] > unit.pgsql >> edit unit.pgsql and change varchar(20) to varchar(40) and add a line to >>beginning of file "drop table unit" >> pgsql [dbname] < unit.pgsql >> >>Frank >> >>At 12:03 PM 2/4/02 -0500, David A Dickson wrote: >> >I have a tabl called 'unit' with a field 'room' of type character >> >varying(20). I want to change the type to character varying(40). >> >How do I do this without affecting any data in the table. > >Has anyone discovered any workaround to the lack of a full ALTER >TABLE that preserves the OID for each row? I am finding that for >insurance I have to assign each table an SERIAL of my own to create >an autoincremented ID that I can control - because using OID as a key >requires me to update the key throughout the database if I have to >drop the table. > >Elaine Lindelef
On Mon, Feb 04, 2002 at 11:08:57AM -0800, Elaine Lindelef wrote: > Has anyone discovered any workaround to the lack of a full ALTER > TABLE that preserves the OID for each row? I am finding that for > insurance I have to assign each table an SERIAL of my own to create > an autoincremented ID that I can control - because using OID as a key > requires me to update the key throughout the database if I have to > drop the table. Probably a good idea anyway since OIDs are not guarenteed to be unique. At least by using a SERIAL you will notice when the it wraps around. I think in 7.2 the OID column will be optional. -- Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/ > Terrorists can only take my life. Only my government can take my freedom.