[ logme @ 18.01.2008. 13:51 ] @
Pozdrav svima,

Da li neko zna postoji li mogućnost da se u access -u 2000 koriste funkcije "mediana" i "quartile". Znam da u excel -u postoje te funkcije, ali interesuje me da li ih mogu upotrijebiti u access -u.

Pozdrav
[ Zidar @ 18.01.2008. 14:03 ] @
Funkcije median i quartile ne postoje u Accessu. Medjutim, ako znas kako se dobija medijana i quartile, onda to mozes uraditi i u Accessu.

Mediana je srednji element u sortiranom skupu. Napravis kveri, poredjas sve po velciini (ORDER BY), dodelis redne brojeve (ovo je malo nezgodno, ali moze) i odatle izaberes onaj koji je u sredini niza. Ako je broj elemenata paran, onda izabers dva u sredini i podelis sa dva i to je to.

QUartile je on 'element u nziu od koga je 25% vece'. Kao i za medijanu, sortiras elemente pomocu SELECT.. ORDER BY, pa omesto rednih brojeva dodelis procente (pretvoris redne brojeev u procente) i odatle izaberes 25%, 50% ili sta ti treba.

:-)
[ logme @ 18.01.2008. 19:17 ] @
Hvala Zidar,

hvala na brzom i kvalitetnom odgovoru.
Probacu uraditi na nacin kako si opisao. Javim se ako bude problema

Pozdrav
[ Zidar @ 18.01.2008. 21:27 ] @
Imaces posla sa subkverijima. jes li siguran da bas ovo mora u Accessu, a ne moze u Excelu? Kveriji koji ti trebaju su teski za pisanje i bice verovatno sporo izvrsavanje.
[ logme @ 19.01.2008. 17:36 ] @
U stvari i nisam bas siguran. Pomazem kolegi na poslu. On se prilicno dobro snalazi u access -u, ali izgleda da ce morati preci na neki program u kojem ranije nije radio (zove se exim ili sl). Taj program ima dosta nedostataka i plan je da ga koristi samo kada mora, a da ima u access -u svoju varijantu koja bi radila posao. Baza je ogromna, nisam siguran da bi ispis mogao stati na jedan worksheet u excel -u (preko 65000 zapisa). Zbog svega toga trazimo alternativu u access -u.
Svaki savjet je dobrodosao.
[ Kiro @ 21.01.2008. 14:16 ] @
izonic je negdje objašnjavao kako se kroz reference može uvesti u access excel-ova biblioteka funkcija i onda se sve funkcije mogu koristiti i u accesu.

Evo slika. pa pokušaj.






[Ovu poruku je menjao Kiro dana 21.01.2008. u 15:34 GMT+1]
[ Kiro @ 21.01.2008. 15:42 ] @
funkcije Za Median i Quartile

Code:
Function Median(tName As String, fldName As String) As Single 
    Dim MedianDB As DAO.Database 
    Dim ssMedian As DAO.Recordset 
    Dim RCount As Integer, i As Integer, x As Double, y As Double 
    Dim OffSet As Integer 
    
    Set MedianDB = CurrentDb 
    Set ssMedian = MedianDB.OpenRecordset( _ 
                   "SELECT [" & fldName & _ 
                   "] FROM [" & tName & _ 
                  "] WHERE [" & fldName & "] IS NOT NULL " & _ 
                 "ORDER BY [" & fldName & "];") 
    'NOTE: To include nulls when calculating the median value, omit 
    'WHERE [" & fldName & "] IS NOT NULL from the example. 
    ssMedian.MoveLast 
    RCount% = ssMedian.RecordCount 
    x = RCount Mod 2 
    If x <> 0 Then 
        OffSet = ((RCount + 1) / 2) - 2 
        For i% = 0 To OffSet 
            ssMedian.MovePrevious 
        Next i 
        Median = ssMedian(fldName) 
      Else 
        OffSet = (RCount / 2) - 2 
        For i = 0 To OffSet 
            ssMedian.MovePrevious 
        Next i 
        x = ssMedian(fldName) 
        ssMedian.MovePrevious 
        y = ssMedian(fldName) 
        Median = (x + y) / 2 
    End If 
    ssMedian.Close 
    MedianDB.Close 
End Function



Code:
Function fnQuartile(tName As String, fldName As String, _ 
                              Optional QWert As Byte = 2) As Double 
    Dim lCount As Long 
    Dim P1  As Long 
    Dim Q1  As Double 
    Dim P2  As Long 
    Dim Q2  As Double 
    Dim P3  As Long 
    Dim Q3  As Double 
    Dim QAusgabe As Double 
    
    With CurrentDb.OpenRecordset("SELECT [" & fldName & _ 
                                 "] FROM [" & tName & _ 
                                "] WHERE [" & fldName & "] IS NOT NULL " & _ 
                               "ORDER BY [" & fldName & "];") 
        If Not .EOF Then 
            .MoveLast 
            lCount = .RecordCount 
            .MoveFirst 
            P1 = Int((1 / 4 * (lCount - 1)) + 1) 
            Q1 = (1 / 4 * (lCount - 1)) - Int(1 / 4 * (lCount - 1)) 
            P2 = Int((2 / 4 * (lCount - 1)) + 1) 
            Q2 = (2 / 4 * (lCount - 1)) - Int(2 / 4 * (lCount - 1)) 
            P3 = Int((3 / 4 * (lCount - 1)) + 1) 
            Q3 = (3 / 4 * (lCount - 1)) - Int(3 / 4 * (lCount - 1)) 
            Select Case QWert 
              Case 1 
                .Move P1 - 1 
                QAusgabe = .Fields(fldName) 
                If Q1 <> 0 Then 
                    .MoveNext 
                    QAusgabe = QAusgabe + (.Fields(fldName) - QAusgabe) * Q1 
                End If 
              Case 2 
                .MoveFirst 
                .Move P2 - 1 
                QAusgabe = .Fields(fldName) 
                If Q2 <> 0 Then 
                    .MoveNext 
                    QAusgabe = QAusgabe + (.Fields(fldName) - QAusgabe) * Q2 
                End If 
              Case 3 
                .MoveFirst 
                .Move P3 - 1 
                QAusgabe = .Fields(fldName) 
                If Q3 <> 0 Then 
                    .MoveNext 
                    QAusgabe = QAusgabe + (.Fields(fldName) - QAusgabe) * Q3 
                End If 
            End Select 
        End If 
    End With 
    fnQuartile = QAusgabe 
End Function


Evo i linka
http://www.office-loesung.de/ftopic96471_0_0_asc.php


[Ovu poruku je menjao Kiro dana 21.01.2008. u 18:21 GMT+1]
[ logme @ 23.01.2008. 08:05 ] @
Hvala svima,

Pokusao sam kroz reference uvesti excel- ovu biblioteku funcija u access i sve mi izgleda kao na Kirinoj slici, ali u expression builderu ih i dalje ne vidim.

Pozdrav
[ Kiro @ 23.01.2008. 13:03 ] @
Pa probaj upotrijebiti ove gore funkcije koje sam ti dao čini mi se da su ok. Malo ih testiraj na manjem skupu podataka i provjeri ispravnost.
Ili zakači svoj primjer ovdje.