Výsledky 1 až 13 z 13

Téma: [MySQL] vyberovy dotaz

  1. #1

    Standardní [MySQL] vyberovy dotaz

    hodne zjednodusim svoji situaci:
    mam tabulku vytvorenou SQL-prikazem:
    Kód:
    CREATE TABLE operace
    (
      id INT PRIMARY KEY AUTO_INCREMENT,
      uspech INT
    );
    pole uspech nabyva hodnot 0 nebo 1 podle toho, jestli byla operace uspesna. jak jednim SQL-prikazem zjistit procento uspesnosti, tzn. pocet uspesnych/pocet celkem*100 ?
    1) ASUS M6A
    2) Toshiba Portége R600-10U
    3) ASUS A8V-X AMD Athlon 64 3000+ Kingmax 2x256MB DDR 400 WD 120GB Samsung 80 GB GMC G30 Fortron FSP400-60THN-P
    Ideální indentace pro Pascal je šest stop pod zem.

  2. #2
    Senior Member minceVIP Avatar uživatele sisi
    Založen
    24.02.2003
    Bydliště
    Auckland, NZ
    Příspěvky
    2 176
    Vliv
    294

    Standardní

    Neviem ci MySQL podporuje agregacne funkcie... ak hej (co predpokladam), potom by mohlo fungovat toto:
    Kód:
    SELECT AVG(uspech)*100 FROM operace;
    Intel Core 2 Duo E6600 @ 3.2GHz (8 * 400MHz) @ 1.3V with Zalman CNPS9500 AT @ 1800RPM, ASUS P5B Deluxe/WiFi, 2x1GB Corsair Twin2X PC2-6400 DDRAM @ 400MHz (4-4-4-12) @ 2.1V, Leadtek 8800GT 512MB, WD Caviar SE16 250GB, Asus DRW-1608P3S, Creative SB Audigy Value, Logitech X-230 speakers, Enermax Liberty 400W, 2x120mm Thermaltake case fan @ 1800RPM, Thermaltake Aguila black case, HP LP2065 LCD, Logitech MX400

  3. #3

    Standardní

    jo, to funguje, ale bohuzel mi to nepomuze, protoze jak tak koukam, zjednodusil jsem to az moc realna situace je, ze je definovano asi 7 ruznych stavu (misto sloupce uspech by to byl sloupec stav INT), pricemz uspesna operace je to tehdy, je-li stav!=3. Neda se nejak tohle?
    1) ASUS M6A
    2) Toshiba Portége R600-10U
    3) ASUS A8V-X AMD Athlon 64 3000+ Kingmax 2x256MB DDR 400 WD 120GB Samsung 80 GB GMC G30 Fortron FSP400-60THN-P
    Ideální indentace pro Pascal je šest stop pod zem.

  4. #4
    Senior Member mince Avatar uživatele kecinzer
    Založen
    08.10.2002
    Bydliště
    Děčín - perla severu
    Věk
    41
    Příspěvky
    3 184
    Vliv
    318

    Standardní

    Zjistíš počet úspěšných stavů, ten vydělíš počtem všech záznamů a pak vynásobíš stovkou a máš to
    MacBookPro 13 (mid 2014): Intel Core i5-4278U 2,6GHz | Intel Iris 5100 | 8GB RAM | 128GB SSD | 2560x1600 @ best for retina || HP LP2475w @ DP 1920x1200 || OSX 10.11.2
    ProBook: HP ProBook 650 G1 @ Core i5 4200M 2,5GHz | Intel HD4600 | 12GB RAM | 500 GB Seagate HDD 7200 || 1920x1080 || HP LP2475w @ DP 1920x1200 || Win10 Ent 64bit
    iPhone 6 Plus 16GB Space Gray | iOS 9.2

  5. #5

    Standardní

    Citace Původně odeslal kecinzer
    Zjistíš počet úspěšných stavů, ten vydělíš počtem všech záznamů a pak vynásobíš stovkou a máš to
    no jiste, jak jinak, problem je v tom, jak to narvat do jednoho sql-dotazu. muzu samozrejme udelat jeden select kterym zjistim, kolik je uspesnych, druhej, kolik je celkem a pak ziskam pomer, ale problem je, ze nechci prepisovat 2 dny prace, takze bych to rad narval do 1 sql-dotazu...
    1) ASUS M6A
    2) Toshiba Portége R600-10U
    3) ASUS A8V-X AMD Athlon 64 3000+ Kingmax 2x256MB DDR 400 WD 120GB Samsung 80 GB GMC G30 Fortron FSP400-60THN-P
    Ideální indentace pro Pascal je šest stop pod zem.

  6. #6

    Standardní

    tak uz jsem na to konecne prisel. kdyby to nekoho zajimalo, je to:
    Kód:
    SELECT AVG(IF(stav!=3,1,0))*100 FROM operace
    Thanks to sisi
    A prosim nejakeho moda o lock
    1) ASUS M6A
    2) Toshiba Portége R600-10U
    3) ASUS A8V-X AMD Athlon 64 3000+ Kingmax 2x256MB DDR 400 WD 120GB Samsung 80 GB GMC G30 Fortron FSP400-60THN-P
    Ideální indentace pro Pascal je šest stop pod zem.

  7. #7
    Senior Member mince Avatar uživatele kecinzer
    Založen
    08.10.2002
    Bydliště
    Děčín - perla severu
    Věk
    41
    Příspěvky
    3 184
    Vliv
    318

    Standardní

    Citace Původně odeslal ripper
    tak uz jsem na to konecne prisel. kdyby to nekoho zajimalo, je to:
    Kód:
    SELECT AVG(IF(stav!=3,1,0))*100 FROM operace
    Thanks to sisi
    A prosim nejakeho moda o lock
    JJ, nebo takle to taky de no v jednom dotazu. To je moc šikovný, já bych všechno řešil v PHP.
    MacBookPro 13 (mid 2014): Intel Core i5-4278U 2,6GHz | Intel Iris 5100 | 8GB RAM | 128GB SSD | 2560x1600 @ best for retina || HP LP2475w @ DP 1920x1200 || OSX 10.11.2
    ProBook: HP ProBook 650 G1 @ Core i5 4200M 2,5GHz | Intel HD4600 | 12GB RAM | 500 GB Seagate HDD 7200 || 1920x1080 || HP LP2475w @ DP 1920x1200 || Win10 Ent 64bit
    iPhone 6 Plus 16GB Space Gray | iOS 9.2

  8. #8

    Standardní

    Citace Původně odeslal ripper
    tak uz jsem na to konecne prisel. kdyby to nekoho zajimalo, je to:
    Kód:
    SELECT AVG(IF(stav!=3,1,0))*100 FROM operace
    Thanks to sisi
    A prosim nejakeho moda o lock
    Tohle ti funguje Me to nejede ani na MySQL ani v Sybase ! (Uz pri prvnim pohledu na tento zapis se mi to zdalo ponekud podezrele anebo tak genialni, ze jsem si musel dat tu praci a hned to vyzkouset )
    ERROR 1064: You have an error in your SQL syntax...


    BTW:
    Jako ekvivalent toho tveho zapisu bych spis napsal
    select AVG(neco) from tabulka where neco not in (3,1,0);

  9. #9

    Standardní

    Citace Původně odeslal ripper
    tak uz jsem na to konecne prisel. kdyby to nekoho zajimalo, je to:
    Kód:
    SELECT AVG(IF(stav!=3,1,0))*100 FROM operace
    Thanks to sisi
    A prosim nejakeho moda o lock
    Navic jsem trosku nepochopil jak tim, co jsi napsal , resis svuj pozadavek

    muzu samozrejme udelat jeden select kterym zjistim, kolik je uspesnych, druhej, kolik je celkem a pak ziskam pomer
    (kdyby to totiz fungovalo, dostanes tak akorat prumer ze vsech zaznamu, jejichz stav neni 3,1,0 a ten vynasobis 100, ale nikde tam nevidim, kolik je celkem ani ten podil )

  10. #10

    Standardní

    viki_: no vis, kdyby ses podival na syntaxi IF, zjistil bys, ze ma 3 parametry (podminka, to co se provede pokud je splnena, to co se provede pokud neni splnena) a ze stavum s hodnotou 3 prirazuju nulu a stavum ktery nemaj hodnotu 3 prirazuju 1, takze kdyz z nich pak dam prumer, dostanu pomer uspesne/celkove a abych jeste odpovedel na prvni otazku: jo, jede mi to teda aspon na MySQL 4.0.20a, jinak bych sem nepsal, ze jsem to vyresil, kdybych to nevyzkousel
    1) ASUS M6A
    2) Toshiba Portége R600-10U
    3) ASUS A8V-X AMD Athlon 64 3000+ Kingmax 2x256MB DDR 400 WD 120GB Samsung 80 GB GMC G30 Fortron FSP400-60THN-P
    Ideální indentace pro Pascal je šest stop pod zem.

  11. #11

    Standardní

    Citace Původně odeslal ripper
    ...muzu samozrejme udelat jeden select kterym zjistim, kolik je uspesnych, druhej, kolik je celkem a pak ziskam pomer...
    Kdyz jsem to procetl cele od zacatku. tak by me zajimalo proc tam teda cpete nejaky prumer (AVG ) ? ? ?

  12. #12

    Standardní Re: [MySQL] vyberovy dotaz

    no asi jsi to necetl od zacatku do konce slo mi o JEDEN sql-prikaz tak tam furt necpi cosi o dvou prikazech
    Citace Původně odeslal ripper
    jak jednim SQL-prikazem zjistit procento uspesnosti, tzn. pocet uspesnych/pocet celkem*100 ?
    1) ASUS M6A
    2) Toshiba Portége R600-10U
    3) ASUS A8V-X AMD Athlon 64 3000+ Kingmax 2x256MB DDR 400 WD 120GB Samsung 80 GB GMC G30 Fortron FSP400-60THN-P
    Ideální indentace pro Pascal je šest stop pod zem.

  13. #13

    Standardní

    Citace Původně odeslal ripper
    viki_: no vis, kdyby ses podival na syntaxi IF, zjistil bys, ze ma 3 parametry (podminka, to co se provede pokud je splnena, to co se provede pokud neni splnena) a ze stavum s hodnotou 3 prirazuju nulu a stavum ktery nemaj hodnotu 3 prirazuju 1, takze kdyz z nich pak dam prumer, dostanu pomer uspesne/celkove a abych jeste odpovedel na prvni otazku: jo, jede mi to teda aspon na MySQL 4.0.20a, jinak bych sem nepsal, ze jsem to vyresil, kdybych to nevyzkousel
    Jo uz to konecne chapu, omlouvam se za dlouhe vedeni (Ale nefachci to treba na Sybasce, tahke syntaxe IF asi neni podle norem T-SQL ?)

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •