TwojePC.pl © 2001 - 2024
|
|
A R C H I W A L N A W I A D O M O Ś Ć |
|
|
|
Ciekawy problem z SQL (POSTGRES) , AwerS 13/02/09 15:53 Witam
mam ciekawy problem z zapytaniem. Nie za bardzo wiem jak sie do tego zabrac.
Mam dane w tabeli wygladajace nastepujaco:
id;login;host;status;date
2472;"lukaszk";"LUKASZK";1;"2009-02-11 07:09:27.822909"
2568;"lukaszk";"LUKASZK";1;"2009-02-11 15:32:12.530103"
2614;"lukaszk";"LUKASZK";0;"2009-02-11 20:38:11.871066"
2624;"lukaszk";"LUKASZK";1;"2009-02-12 07:16:21.413218"
2625;"lukaszk";"LUKASZK";1;"2009-02-12 07:16:21.891194"
2631;"lukaszk";"LUKASZK";1;"2009-02-12 07:24:32.86117"
2753;"lukaszk";"LUKASZK";0;"2009-02-12 16:22:33.981579"
2796;"lukaszk";"LUKASZK";1;"2009-02-13 07:31:50.891076"
status okresla :
poczatek czasu pracy = "1"
koniec czasu pracy = "0"
chcialbym osiagnac wynik zapytania typu
"lukaszk";"LUKASZK";"czas pracy"
czas pracy jest suma roznicy konca (najpozniejsza date zakonczenia w danym dniu) i poczatku (najwczesniejsza date rozpoczecia w danym dniu) z poszczegolnych dni
w skrocie:
Napisalismy w pracy skrypt, ktory zlicza dzienny czas pracy. oblicza czas od pierwszego zalogowania do ostatniego wylogowania w dniu ... a teraz zaszla potrzeba zrobienia sumy czasu pracy tygodniowej (5 dni)
Z gory dzieki za odpowiedz.AwerS - jak dla mnie , rulezDC 13/02/09 16:14
zapytanie zagniezdzone tutaj by pomoglo nie wiem czy postgres akurat obsluguje takie cos
czyli najpierw masz zliczenie czasu pracy w danym dniu macie ten skrypt, i potem tylko suma czasu z danych dni, powinno dzialackoniec koniec koniec - moze ciut inaczej , AwerS 13/02/09 16:27
jak wypisac w jednej linii w wyniku min id i max id na dany dzien? nie za bardzo wiem jako moge zmusic "group by" aby tylko i wylacznie interpretowal z pola date (timestamp) rok-dzien-miesiac bez godziny :( zapytania zagniezdzone postgres obsluguje bezproblemowoAwerS
- może tak , szarp 13/02/09 16:25
Nie jest to SQL z postgresu, nie wiem jakie typy danych tam są obsugiwane datetime, interval .... ale coś takiego może pomożeKS - hehe , szarp 13/02/09 16:26
ELECT MAX(date)-MIN(date) czas_pracy,DATE(date) data,login
FROM tablica
GROUP BY login,DATE(date)KS - nie idzie , szarp 13/02/09 16:27
SELECT MAX(date)-MIN(date) czas_pracy,DATE(date) data,login
FROM tablica
GROUP BY login,DATE(date) ) AS tablica2KS - hgw , szarp 13/02/09 16:28
nie mogę wkleić całości .... skrypt nie pozwalaKS - może teraz , szarp 13/02/09 16:30
ELECT login,SUM(czas_pracy)
FROM (ELECT MAX(date)-MIN(date) czas_pracy,DATE(date) data,login
FROM tablica
GROUP BY login,DATE(date) ) AS tablica2
WHERE data Between <DATA_OD> AND <DATA_DO)
GROUP BY login_;KS - hehehehe , szarp 13/02/09 16:32
ELECT to poto aby przez skrypt boadra przeszło ...
login_ = loginKS - schemat tabeli , AwerS 13/02/09 16:41
--CREATE TABLE work_clock
(
id integer NOT NULL DEFAULT nextval('test_id_seq'::regclass),
"login" text,
host text,
"domain" text,
status smallint,
date timestamp without time zone DEFAULT now(),
CONSTRAINT test_pkey PRIMARY KEY (id)
)
WITH (OIDS=FALSE);
i mam dosyc dziwny problem z
ERROR: syntax error at or near "GROUP"
LINE 7: GROUP BY "login"; po Twoim sqlAwerS - hmm , szarp 13/02/09 21:06
może czepia się grupowania po DATE(date).
Możesz to zrobić poprzez dodatkowe zapytanie preparując odpowiednio dane. Niektóre motory nie chcą grupować po wyniku funkcji.KS
- sama struktura bazy , Deus ex machine 13/02/09 21:31
jakos dziwnie pachnie. Cos tu jest zamieszane."Uti non Abuti" - czemu , AwerS 16/02/09 09:38
dziwnie pachnieAwerS
|
|
|
|
|
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL |
|
|
|
|