Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Agregatna funkcija na "bit" tipu kolone?

[es] :: MS SQL :: Agregatna funkcija na "bit" tipu kolone?

[ Pregleda: 972 | Odgovora: 5 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vlstefanovic
Vladimir Stefanovic
Vladimirci

Član broj: 6242
Poruke: 22
*.vdial.verat.net.

Jabber: vladimir@elitesecurity.org
Sajt: dube.cjb.net


Profil

icon Agregatna funkcija na "bit" tipu kolone?03.01.2006. u 23:29

Recite mi neku agregatnu funkciju koja moze da radi na "bit" tipu kolone(bez akrobacija).
Hvala.
Vladimir
03.01.2006. u 23:29 

Zidar
Canada

Član broj: 15387
Poruke: 1703
*.eqao.com.



Profil

icon Re: Agregatna funkcija na "bit" tipu kolone?04.01.2006. u 14:16
SELECT
KolonaZaGrupisanje,
COUNT(bit_type_kolona) AS Brojac
FROM tvojaTabela
GROUP BY KolonaZaGrupisanje

MIN,MAX,STDEV nece da rade sa BIT tipovima, barem u verziji 2000.
04.01.2006. u 14:16 

vlstefanovic
Vladimir Stefanovic
Vladimirci

Član broj: 6242
Poruke: 22
213.244.197.*

Jabber: vladimir@elitesecurity.org
Sajt: dube.cjb.net


Profil

icon Re: Agregatna funkcija na "bit" tipu kolone?05.01.2006. u 10:57
OK. Ali nisam dobro postavio pitanje. Treba mi logička funkcija koja će mi npr. dati 0 ili 1 na osnovu vrednosti svih redova.
Vladimir
05.01.2006. u 10:57 

Zidar
Canada

Član broj: 15387
Poruke: 1703
*.eqao.com.



Profil

icon Re: Agregatna funkcija na "bit" tipu kolone?05.01.2006. u 13:30
Ne razumem pitanje. Sta u stvari pokusavas?
05.01.2006. u 13:30 

vlstefanovic
Vladimir Stefanovic
Vladimirci

Član broj: 6242
Poruke: 22
213.244.197.*

Jabber: vladimir@elitesecurity.org
Sajt: dube.cjb.net


Profil

icon Re: Agregatna funkcija na "bit" tipu kolone?07.01.2006. u 21:26
Jedna kolona su neke "flag" vrednosti. Hoću da vidim kada u određenom skupu redova imam bar jednu(ili sve) 0 ili 1.

Npr.:

tab1(int:kol1, bit:flag)

SELECT kol1, SUM(flag+0)-COUNT(*) rez
FROM tab1
GROUP BY kol1

onda ako je rez=0 tada su sve flag vrednosti 1, pa mi ovo SUM(... na neki način glumi logičko AND
Nije mi neophodno AND. Treba mi bilo koja logička funkcija.
Vladimir
07.01.2006. u 21:26 

Zidar
Canada

Član broj: 15387
Poruke: 1703
*.eqao.com.



Profil

icon Re: Agregatna funkcija na "bit" tipu kolone?10.01.2006. u 17:05
Ne znam sta znaci 'bez akrobacija', ali treba da pretvoris Bit u Int ili tinyInt. Upotrebi CAST ili CONVERT, otprilike ovako:
Code:
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblRadnici]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
 BEGIN
CREATE TABLE [tblRadnici] (
    [Radnik_ID] [int] NOT NULL ,
    [ID_Odeljenje] [int] NOT NULL ,
    [Plata] [money] NOT NULL ,
    [BitPolje] [bit] NULL ,
    CONSTRAINT [PK_tblRadnici] PRIMARY KEY  CLUSTERED 
    (
        [Radnik_ID]
    ) WITH  FILLFACTOR = 90  ON [PRIMARY] 
) ON [PRIMARY]
END

GO



--- tabela tblradnici
SELECT * FROM tblRadnici

Radnik_ID   ID_Odeljenje Plata                 BitPolje 
----------- ------------ --------------------- -------- 
          1            1               12.0000        1 
          2            1               15.0000        0 
          3            1                8.0000        1 
          4            1               13.0000        0 
          5            2               16.0000        1 
          6            2               12.0000        1 
          7            2               15.0000        1 
          8            2               16.0000        1 
          9            3               12.0000        0 
         10            3               10.0000        0 
         11            3                5.0000        0 
         12            3                8.0000        0 

(12 row(s) affected)

--- Brojanje redova gde je VrednostBitPolja = 1
SELECT 
    ID_Odeljenje
    , SUM(CAST ([BitPolje] AS tinyint)) AS BrojJedinica
    , COUNT (*) AS BrojRedova
FROM tblRadnici
GROUP BY ID_Odeljenje

--- Moze i ovako:
SELECT 
    ID_Odeljenje
    , SUM(CAST ([BitPolje] AS tinyint)) AS BrojJedinica
    , COUNT (*) AS BrojRedova
    , Resultat = 
        CASE 
            WHEN
                SUM(CAST ([BitPolje] AS tinyint))= COUNT (*)
                    THEN 'Sve jedinice'
            WHEN
                SUM(CAST ([BitPolje] AS tinyint))= 0
                    THEN 'Sve nule'
            ELSE cast(SUM(CAST ([BitPolje] AS tinyint)) AS varchar)+' jedinica'
        END
FROM tblRadnici
GROUP BY ID_Odeljenje

10.01.2006. u 17:05 

[es] :: MS SQL :: Agregatna funkcija na "bit" tipu kolone?

[ Pregleda: 972 | Odgovora: 5 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.