Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » JE Jacaw 07:38
 » Dexter 07:37
 » DYD 07:32
 » steve 07:31
 » mr-owl 07:29
 » Kenny 07:25
 » NimnuL 07:23
 » leosh 07:21
 » Robak 07:17
 » cVas 07:15
 » waski 07:09
 » kemilk 06:57
 » PCCPU 06:56
 » AfiP 06:55
 » Miron 06:48
 » Ziomek 06:40
 » ProSavage 06:25
 » PeKa 06:22
 » fox19 05:58
 » bmiluch 05:37

 Dzisiaj przeczytano
 41145 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
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

  1. 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 dzialac

    koniec koniec koniec

    1. 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 bezproblemowo

      AwerS

  2. 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że

    KS

    1. 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

      1. 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 tablica2

        KS

        1. hgw , szarp 13/02/09 16:28
          nie mogę wkleić całości .... skrypt nie pozwala

          KS

          1. 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

            1. hehehehe , szarp 13/02/09 16:32
              ELECT to poto aby przez skrypt boadra przeszło ...

              login_ = login

              KS

              1. 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 sql

                AwerS

                1. 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

  3. sama struktura bazy , Deus ex machine 13/02/09 21:31
    jakos dziwnie pachnie. Cos tu jest zamieszane.

    "Uti non Abuti"

    1. czemu , AwerS 16/02/09 09:38
      dziwnie pachnie

      AwerS

    
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL