problem z postgresql - Wersja do druku +- Forum QGIS (http://forum.quantum-gis.pl) +-- Dział: Desktop GIS (http://forum.quantum-gis.pl/forum-4.html) +--- Dział: QGIS (http://forum.quantum-gis.pl/forum-5.html) +--- Wątek: problem z postgresql (/thread-795.html) |
problem z postgresql - Markus - 30-10-2012 Witam, Może trochę offtopic, ale nie daję rady zrobić pozornie prostej rzeczy w postgresie: Mam do zrobienia mapkę z nałożonymi wykresami kołowymi pokazującymi wartości 5 zmiennych w różnych punktach. Wśród wartości zdarza się NULL, ale nic się nie stanie, jeśli będzie zwykłe 0. Chciałbym uzależnić wielkość wykresu od automatycznie tworzonej sumy zmiennych dla punktu (czyli suma w rzędach, a nie w kolumnach). Można to zrobić łatwo i przyjemnie w Excelu i potem eksportować dane do Qgis, ale przyznam, że przy sporej liczbie danych i często zmieniających się wartościach wolałbym mieć sumowanie w bazie danych... Pozdrawiam, Markus RE: problem z postgresql - Rayo - 31-10-2012 Sumować można bezpośrednio w QGISie wykorzystując kalkulator pól w tabeli atrybutów. Ma to jednak tą wadę, że nie odbywa się automatycznie (po każdej zmianie pól składowych sumy trzeba odpalić kalkulator i przeliczyć wszystko od nowa). Zawsze to jednak dużo lepsze niż przerzucanie danych do EXCELA i odwrotnie. W Postgresie musiałbyś zrobić triggera, który po dokonaniu zmian obliczy sumę i wstawi do tabeli. RE: problem z postgresql - Markus - 31-10-2012 Dzięki za pomysł z kalkulatorem pól. Co do triggera, to chyba nie jest konieczny, dane do mapki czerpię z widoku, który sumuje dane dla poszczególnych punktów według kolumn (Mam kilka prób z danego punktu i chwilowo bardziej interesują mnie sumy, niż średnie czy inne odchylenia pomiędzy próbami). Gdyby udało się w tym samym widoku, albo w drugim, powiązanym, dołożyć sumy "w poprzek" dla punktów, byłoby super. Pozdrawiam, Markus RE: problem z postgresql - Rayo - 31-10-2012 Masz rację, jeśli chcesz wykorzystać widok to nie trzeba triggera. Jak znajdę chwilę to sprawdzę i podeślę Ci kod jak to zrobić w SQL. Poniżej zapytanie SQL, które tworzy widok z sumowaniem wierszy. Dane są pobierane z trzech kolumn z tabeli i przenoszone do widoku, w którym tworzona jest czwarta kolumna z sumą. Mam nadzieję, że o to Ci chodziło. CREATE OR REPLACE VIEW gis.sumy AS SELECT "test-sumy".kolumna1, "test-sumy".kolumna2, "test-sumy".kolumna3, "test-sumy".kolumna1 + "test-sumy".kolumna2 + "test-sumy".kolumna3 AS suma FROM gis."test-sumy"; RE: problem z postgresql - Markus - 31-10-2012 Dzięki za kod, właśnie o taki mi chodziło. Przerobiłem i działa. W sumie, próbowałem już czegoś podobnego, problem z "niedziałaniem" polegał głównie na mojej słabej znajomości SQL i na użyciu NULL zamiast "0", przez co oczywiście zamiast sum pojawiały się NULLe. Jeszcze raz dzięki, pozdrawiam, Markus |