Dodaj do ulubionych

Pytanko odnośnie SQL'a

29.11.04, 11:03
Używam SQla sla bazy Oracle. W jednej kolumnie będę mieć udział procentowy
jednego skłanika w całości, w drugiej skumulowane wartości z kolumny
pierwszej malejąco(też jeszcze nie wiem za bardzo jak to zrobię). W następnej
kolumnie mają być trzy wartości:albo A, albo B, albo C. Chcę aby zwracało mi
wartość A dla produktów pierwszych z listy, których skumulowany udział daje
wartość najbliższą 80%, B dla produktów których skumulowana wartość daje
kolejne 15%, czyli od 80% do 95% około, i C dla reszty.Po prostu chodzi o to
aby sklasyfikować produkty na 3 kategorie: A, B i C. Mam nadzieję że
wyraziłam się dość jasno. Czy ktoś może mi pomóc?? Z góry dziękuję.
Obserwuj wątek
    • Gość: XXX Re: Pytanko odnośnie SQL'a IP: *.warszawa.sdi.tpnet.pl 29.11.04, 17:12
      W bazach relacyjnych (czyli z grubsza tych co uzywaja jezyka SQL) wiersze
      trzymane sa w stanie nieposortowanym (pomijajac indeksy, ale to inna kwestia).
      Dlatego jesli chcesz znac kolejnosc, to albo za kazdym razem zapytanie z ORDER
      BY, albo dodatkowe pole, ktore bedzie wskazywac kolejnosc (a wtedy przy kazdym
      dodawaniu/usuwaniu trzeba przejrzec tabele i popoprawiac wartosci - da sie to
      zrobic procedura wbudowana).

      Jesli masz takie pole, to zrobienie drugiej kolumny nie stanowi wiekszej
      trudnosci - dla kazdego wiersza (masz dostep do jego numeru) prosisz o sume dla
      wszystkich mniejszych. Da sie to tez zrobic ladniej - wziac sume skumulowana z
      poprzedniego wiersza (o numerze o jeden mniejszym) i dodac co trzeba.

      Trzecia kolumna jest najmniej skomplikowana, jesli masz druga. Zalezy czy ma byc
      'fizycznie' kolumna, czy tez ma byc tylko wyswietlana.

      I tu wazne pytanie: mozesz korzystac z dodatkowych pol, czy musisz sobie dac
      rade z tym co jest?
      • Gość: magda20044 Re: Pytanko odnośnie SQL'a IP: *.brwsa.com.pl / *.brwsa.com.pl 30.11.04, 14:11
        Tak, chcę znać kolejność, więc chyba ORDER BY wchodzi w grę. Szczerze mówiąc
        to nie wiem jak zrobić w ten drugi sposób bo nie za bardzo znam się na bazach i
        na SQL'u. Zaznaczam że tabela będzie mieć sporo wierszy. Raczej już ta pierwsza
        kolumna powinna być posortowana malejąco wg wartości, żeby wartości skumulowane
        też były malejące. Czy możesz napisać jak takie zapytaie powinno wyglądać??

        Kurcze, zrobienie tej sumy to też dla mnie czarna magia jak na razie. mam taki
        programik który buduje zestawienia na podstawie wyciągniętych informacji z baz
        danych, i w nim jest opcja sortowania dowolnej kolumny wg dowolnego parametru.

        Jeśli chodzi o trzecią kolumnę, to chyba ma być tylko wyświetlana, bo chodzi mi
        o to żeby była w tym zestawieniu zrobionym przez ten program o którym pisałam.

        Ten program ma mi dać po prostu zestawienie produktów, z podaniem ich udziału
        procentowego w całości w porządku malejącym, a jeżeli to będzie to już wartość
        skumulowana i tak będzie malejąca, no i ta ostatnia kolomna, ma mi zaznaczyć A
        dla produktów dla których skumulowany udział jest najbliższy 80 % i dalej tak
        jak napisałam wczoraj.

        Najpierw muszę wyciągnąć potrzebne mi dane z bazy, zapisać je pod jakąś nazwą,
        odpalić ten program, otworzyć to co zapisałam i program mi buduje zestawienie,
        to jest coś a'la Excell tylko z taką możliwością, że można budowac wiele
        wymiarów w jedynm zestawieniu.Ale żeby zrobić to zestawienie to muszę najpierw
        wyciągnąć z bazy danych to co mnie interesuje. Będzie to tylko lista produktów
        z ich udziałem wartościowym, ja mam to zamienić na procenty itd aż do
        zbudowania zestawienia. I to nie jest ważne w jaki sposób, ważne aby się dało i
        aby dało to co chcę uzyskać.

        Chyba namieszałam trochę, ale cóż.. tak to jest jak się ktoś na czymś nie zna a
        a musi coś zrobić. Jak możesz to wyjaśnij mi swojego posta bardziej
        łopatologicznie :) bo naprawdę jestem początkująca w tych kwestiach.

        Dziękuję Ci bardzo za zainteresowanie.
        • Gość: XXX Re: Pytanko odnośnie SQL'a IP: *.warszawa.sdi.tpnet.pl 30.11.04, 23:54
          select * from tabela order by kolumna1;
          Z tego wyjdzie tablela posortowana wedlug jednej z kolumn (w tym przypadku wstaw
          nazwe tej z wartosciami procentowymi).

          Teraz tak...zeby dla kazdej z nich wyswietlic tez sumarycznie to co ma
          wiecej..hmmm. Chyba cos takiego
          select tabela.kolumna1, (select sum(kolumna1) from tabela where
          kolumna1<tab1.kolumna1) from tabela as tab1 order by tabela.kolumna1

          Glowy nie daje czy to zadziala - nie wiem czy Oracle przyjmie takie zapytanie
          (select w selecie). Na wykladzie z baz danych bylo, ale nie pamietam gdzie
          wystepuje a gdzie nie. :)

          Jesli chociaz troche liznelas SQLa to powinnas byc w stanie zdecydowac czy to
          mniej wiecej to co potrzebujesz czy niekoniecznie. Jesli masz watpliwosci pytaj :)

Nie masz jeszcze konta? Zarejestruj się


Nakarm Pajacyka