Zmiany pomiędzy wersją początkową i wersją 1 dla DeployerGuide/Custumization/AdvancedReporting/SQLExamples

Pokaż
Ignoruj:
Data i czas:
09/24/12 17:51:13 (12 years temu)
Autor:
lkucharski (IP: 89.78.227.245)
Komentarz:

--

Legend:

Bez zmian
Dodane
Usunięte
Zmienione
  • DeployerGuide/Custumization/AdvancedReporting/SQLExamples

    v1 v1  
     1= Przykłady SQL do raportów = 
     2 
     3== Użyteczne konstrukcje i funkcje językowe SQL == 
     4 
     5{{{ 
     6--Formatuje datę 
     7SELECT to_char(d.adddat, 'YYYY-MM-DD') FROM documents d;  
     8 
     9-- Pobiera rok 
     10select extract(YEAR from CURRENT_DATE); 
     11 
     12-- Oblicza czas który upłynął od daty do daty (np. na realizacji zadania) 
     13((extract(EPOCH FROM d.rlend_) - extract(EPOCH FROM d.rlstrt))/3600)::numeric(12,2) AS duration 
     14 
     15-- Zamienia liczbę sekund na ciąg: H:M:S - np. 00:30:03 
     16SELECT (1803 || 's')::interval 
     17 
     18-- Formatuje kwotę z pól tekstowych np. z formularzy customowych 
     19select cast(regexp_replace(regexp_replace('301 110,43',' ',''),',', '.') as numeric(12,2)) + 12.50; 
     20 
     21-- Warunkowo koloruje pole 
     22CASE WHEN p.pr_sta = 1 THEN '<div style="color: red">Rozpoczęte</div>' WHEN p.pr_sta = 2 THEN 'W trakcie realizacji' WHEN p.pr_sta = 3 THEN 'Zakończone' END  AS status, 
     23 
     24-- Wybiera te rekordy których data jest w tym tugodniu 
     25to_char(CURRENT_DATE, 'WW') = to_char (adddat, 'WW') 
     26 
     27-- wybiera rekordy nie starsze niż miesiąc 
     28AND dcr.adddat > CURRENT_DATE - interval '1 month' 
     29 
     30}}} 
     31 
     32== Przykładowe użyteczne zapytania do bazy edokumenty == 
     33 
     34{{{ 
     35 
     36-- Pobranie danych z formularzy dynamicznych 
     37 
     38SELECT to_char(d.adddat, 'YY-MM-DD') AS day, 
     39 rozmowy 
     40(SELECT count(*) /10 
     41FROM events_view e WHERE e.trmtyp = 'PHONECALL' AND emp_id IN (84,62) AND e.start_ >= d.adddat::date - 7 
     42AND e.start_ <= d.adddat) AS rozmowy_handlowe, 
     43 spotkania 
     44(SELECT count(*)  
     45FROM events_view e WHERE e.trmtyp = 'MEETING' AND emp_id IN (84,62) AND e.start_ >= d.adddat::date - 7 
     46AND e.start_ <= d.adddat) AS spotkania, 
     47 wartość pola featid 98 
     48f3.data__::int AS odwedok, 
     49f4.ftopnm AS cecha4 
     50FROM documents d 
     51INNER JOIN features_text_view f3 ON d.doc_id = f3.tbl_id AND f3.featid = 98 
     52 cecha z listy wyboru 
     53INNER JOIN features_opt_view f4 ON d.doc_id = f4.tbl_id AND f4.ftopid = 119 
     54WHERE d.is_del IS NOT true AND d.gostof IS NULL  
     55 
     56 
     57-- Wybiera symbol teczki z numeru sprawy oo formacie ''2/03/08/UP/AW'' 
     58 
     59SELECT substring(symbol from '[0-9]*/[0-9]*/[0-9]*/([A-Z]*)') FROm processes; 
     60 
     61 
     62-- Wybiera krótką nazwę klienta jeśli jest, a jeśli jest pusta to długą 
     63 
     64SELECT COALESCE(c.name_2, c.name_1) FROM contacts c; 
     65 
     66 
     67 Wybiera sprawy z wartościami cech (tekstowe i opcje) 
     68 
     69SELECT p.dscrpt, p.symbol, 'PROCESS'::text AS clsnam, prc_id AS keyval,  
     70f1.data__ AS opinia, f2.ftopnm AS reklamacja, f3.data__ AS dzialanie_korygujace, 
     71f4.data__ AS dzialanie_Klient, f5.data__ AS przyczyna 
     72FROM processes_view p  
     73LEFT JOIN features_text_view f1 ON p.prc_id = f1.tbl_id AND f1.featid = 14 
     74LEFT JOIN features_opt_view f2 ON p.prc_id = f2.tbl_id AND f2.featid = 15 
     75LEFT JOIN features_text_view f3 ON p.prc_id = f3.tbl_id AND f3.featid = 16 
     76LEFT JOIN features_text_view f4 ON p.prc_id = f4.tbl_id AND f4.featid = 17 
     77LEFT JOIN features_text_view f5 ON p.prc_id = f5.tbl_id AND f5.featid = 18 
     78WHERE p.prtpid = 1 
     79 
     80 
     81-- Wybiera dane do trendu - do wykresu 
     82 
     83SELECT extract(month from rlstrt) as m,  
     84sum((time__::numeric(12,2)/3600)::numeric(12,2)) AS sum 
     85FROM rcp_cards_view 
     86WHERE rlstrt IS NOT NULL AND is_fak = TRUE AND is_del = FALSE AND tpstid = 9 
     87AND rlstrt + interval '1 year' >= CURRENT_DATE  
     88GROUP BY extract(year from rlstrt),  
     89extract(month from rlstrt)  
     90ORDER BY extract(year from rlstrt), extract(month from rlstrt)  
     91 
     92}}}