Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  MSSQL Keeruline SELECT märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale. Teata moderaatorile
otsing:  
sirius4k
HV veteran
sirius4k

liitunud: 25.09.2005



Autoriseeritud ID-kaardiga

sõnum 28.01.2016 11:32:02 MSSQL Keeruline SELECT vasta tsitaadiga

Tervist

Ei oska seletada lühidalt, mida ma teha tahan, seega sai pealkirjaks siuke suht mitte midagi ütlev sõnade kogum.

Näiteks mul on tabel selliste päistega
ID, Jupi_nimi, Kuupäev

Ma tahaks, et kõigepealt loetaks kokku, mitu jupi_nimi on ja reastataks need siis kahanevalt JA näitama peaks ainult ridasid, millede nimed ma määran ning ülejäänud on ühise nimetajaga "Muud".

Ma olen jõudnud nii kaugele, et saan ridade kogused kätte.. aga ma oskan kogu tabeli sisu saada ja mitte seda "Muud" osa.
SELECT Jupi_nimi, COUNT(*) AS JuppeKokku
FROM Jupitabel
GROUP BY jupi_nimi
ORDER BY JuppeKokku
DESC
Selle tulemusena tuleb siis:
Prosed 123
Mälud 90
SSD 10
HDD 5
Ventikad 1
Monitorid 1
Klaverid 1

Ma tahaks, et see näeks välja selline (tulemus peaks tulema ridade nimede ("Prosed","Mälud") järgi, mitte >=90 selle näite põhjal ja kõik, mis ei ole need kaks, liidetaks kokku ühele reale):
Prosed 123
Mälud 90
Muud 18

Praegu tuleb mul pähe ainult mingite temp tabelite tegemine ja siis nendest uude tabelisse info kandmine, mis on halb. Tõenäoliselt on mingi intelligentsem variant, kuidas seda teha.
Sai vist piisavalt segane icon_lol.gif
Kommentaarid: 55 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
-vodafone-
HV Guru
-vodafone-

liitunud: 26.04.2005



Autoriseeritud ID-kaardiga

sõnum 28.01.2016 11:36:53 vasta tsitaadiga

WHERE ?
Kommentaarid: 240 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 213
tagasi üles
vaata kasutaja infot saada privaatsõnum
xecroy
HV kasutaja
xecroy

liitunud: 23.05.2008




sõnum 28.01.2016 11:51:45 vasta tsitaadiga

Uus tulp category, group by categories.
_________________
Kõige suurem pidur on alati ketas. Naudi inimväärset elu, osta SSD!
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 19
tagasi üles
vaata kasutaja infot saada privaatsõnum
sirius4k
HV veteran
sirius4k

liitunud: 25.09.2005



Autoriseeritud ID-kaardiga

sõnum 28.01.2016 11:53:23 vasta tsitaadiga

Kui ma kasutaks WHERE, saaksin ma tulemuse, kus näidatakse ainult:
Prosed 123
Mälud 90

Ma ei oska väiksemate numbritega ridu agregeerida (kui see on sõna üldse icon_razz1.gif), kus näidataks siis ülejäänud ridade summat nime all Muud.
Kommentaarid: 55 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
DoS
HV veteran
DoS

liitunud: 19.08.2002




sõnum 28.01.2016 12:01:58 vasta tsitaadiga

Teed 2 SELECTi ja paned UNIONiga kokku. Ühega võtad WHERE'iga need, mida tahad ja teisega need, mida ei taha "Muu" alla kokku grupeerida.
Kommentaarid: 50 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 47
tagasi üles
vaata kasutaja infot saada privaatsõnum
sirius4k
HV veteran
sirius4k

liitunud: 25.09.2005



Autoriseeritud ID-kaardiga

sõnum 28.01.2016 15:11:19 vasta tsitaadiga

Tänud
Tuli välja, et UNION-i mul vaja oligi.
Kommentaarid: 55 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
Alan
HV veteran
Alan

liitunud: 12.02.2008



Autoriseeritud ID-kaardiga

sõnum 28.01.2016 15:26:11 vasta tsitaadiga

Lahendus ilmselt käes aga:
SELECT Jupi_nimi, COUNT(*) as JuppeKokku FROM Jupitabel WHERE Jupi_nimi IN ('Prosed', 'Mälud') GROUP BY Jupi_nimi UNION SELECT "Muud" As Jupi_nimi, COUNT(*) as JuppeKokku FROM Jupitabel WHERE Jupi_nimi NOT IN ('Prosed', 'Mälud') ORDER BY JuppeKokku DESC

Proovinud ei ole.
Kommentaarid: 130 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 120
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
sirius4k
HV veteran
sirius4k

liitunud: 25.09.2005



Autoriseeritud ID-kaardiga

sõnum 28.01.2016 15:40:18 vasta tsitaadiga

Alan kirjutas:
Lahendus ilmselt käes aga:
SELECT Jupi_nimi, COUNT(*) as JuppeKokku FROM Jupitabel WHERE Jupi_nimi IN ('Prosed', 'Mälud') GROUP BY Jupi_nimi UNION SELECT "Muud" As Jupi_nimi, COUNT(*) as JuppeKokku FROM Jupitabel WHERE Jupi_nimi NOT IN ('Prosed', 'Mälud') ORDER BY JuppeKokku DESC

Proovinud ei ole.
Naiss thumbs_up.gif Seda ma esialgu mõtlesin ja tahtsingi icon_biggrin.gif

Ma vahepeal jõudsin sellise asjaga kokku keerata
SELECT 'Prosed' AS Kategooria, COUNT(*) AS Kogus FROM Jupitabel WHERE Jupi_nimi = 'Prosed'
UNION
SELECT 'Mälud' AS Kategooria, COUNT(*) AS Kogus FROM Jupitabel WHERE Jupi_nimi = 'Mälud'
UNION
SELECT 'Muud' AS Kategooria, COUNT(*) AS Kogus FROM Jupitabel WHERE Jupi_nimi != 'Prosed' OR Jupi_nimi != 'Mälud'
Mis ei ole kaugeltki nii viisakas, kui su variant ja näeb välja rohkem nagu mingi häkk, aga toimis icon_biggrin.gif
Kommentaarid: 55 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  MSSQL Keeruline SELECT
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.