[ Príspevkov: 20 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 13.06.24
Príspevky: 488
Témy: 139 | 139
Bydlisko: Bytča

Mam takyto select z tabulky, t.j. zoradim si ludi podla priemernej hodnoty v stlpci prispevok

Kód:
$xyz = "SELECT nick_name, avg(prispevok) FROM prispevky_table group by nick_name ORDER by avg(prispevok) DESC ";
$vysledok = mysql_query($xyz) or die ("Stala sa chyba v spojeni s DB");


Tabulka je plna zaznamov a mam v kazdom zazname aj datum, v ktorom dany nick_name pridal zaznam do databazy.

Potrebujem select, ktory mi z tabulky vyberie a zoradi ludi podla avg(prispevok), ktori za poslednych 6 mesiacov vlozili minimalne 60 zaznamov. (urcite to bude maly pocet z celkoveho poctu prispievatelov)

V stlpci prispevok je cislo typu float, ktore moze byt od 0 po 10, aj desatinne.

Dakujem.


Offline

Správca fóra
Správca fóra
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51 | 51
Bydlisko: Bratislava

skus pouzit having - neviem, v akom formate mas datum, takze zatial takto:
Kód:
SELECT nick_name, AVG(prispevok), count(*) pocet
FROM prispevky_table
WHERE datum >= SUBDATE(NOW(), INTERVAL 6 MONTH)
GROUP BY nick_name
HAVING pocet >= 60
ORDER BY AVG(prispevok) DESC


_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 13.06.24
Príspevky: 488
Témy: 139 | 139
Bydlisko: Bytča
Napísal autor témyOffline : 16.09.2011 8:15 | Select zavisly na case aj pocte prispevkov v danom case

datum mam takto: varchar(100) a vyzera presne v takomto formate: 14.09.2011

je to cez datapicker nahodene do tabulky


Offline

Správca fóra
Správca fóra
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51 | 51
Bydlisko: Bratislava

zvolit horsi format datumu sa uz nedalo? :)


_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 13.06.24
Príspevky: 488
Témy: 139 | 139
Bydlisko: Bytča
Napísal autor témyOffline : 16.09.2011 8:31 | Select zavisly na case aj pocte prispevkov v danom case

ono ja to mam tak, ze

if (empty($mesiac)) $mesiac = date('n');
if (empty($rok)) $rok = date('Y');

a potom selecty koncia:
datum LIKE '%$mesiac.$rok'"; - ked hladam pre dany rok
datum LIKE '%$rok'"; - ked hladam pre dany mesiac

takze nejako to treba spojit do kopy nie ? ehm


Offline

Správca fóra
Správca fóra
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51 | 51
Bydlisko: Bratislava

mozno toto pomoze, aj ked funkcia na lavej strane by sa pouzivat nemala:
Kód:
WHERE STR_TO_DATE(datum, '%d.%m.%Y') >= SUBDATE(CURDATE(), INTERVAL 6 MONTH)

Do buducna, nauc sa pouzivat typy stlpcov urcene pre casove udaje!


_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 13.06.24
Príspevky: 488
Témy: 139 | 139
Bydlisko: Bytča
Napísal autor témyOffline : 16.09.2011 8:42 | Select zavisly na case aj pocte prispevkov v danom case

a kebyze to spravim nejako tak, ze cely stlpec zmenim na format DATE ? nepomohlo by to ?
ta transformacia myslim by s udajmi dnu nemala nic spravit, ci ano ?
ptom by to nebolo lahsie ?
dik


Offline

Správca fóra
Správca fóra
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51 | 51
Bydlisko: Bratislava

ked zmenis cisto len typ stlpca na date, hodnoty ti automaticky zmeni, len nie tak, ako by si si mozno prial - napriklad z datumu 14.09.2011 ti spravi 2014-09-20

ale nic ti nebrani v tom, aby si vykonal jeden update (upravis format datumu), zmenil typ stlpca a upravil svoj php kod...


_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 13.06.24
Príspevky: 488
Témy: 139 | 139
Bydlisko: Bytča
Napísal autor témyOffline : 17.09.2011 12:18 | Select zavisly na case aj pocte prispevkov v danom case

dakujem ...
ale mam tu problem ...

proste teraz spravi toto: vypise tych ludi, pocet je OK, ale zoradi ich zle, lebo ich zoradi podla avg(prispevok) za ten interval 6 mesiacov - potrebujem zoradenie podla avg(prispevok) celkove

ako na to ? nejakym vnorenym SELECTOM ? a ten dnu bude to co si napisal a ten vonkajsi bude order by avg(prispevok) ale nebude obmedzeny tym casovym intervalom ... alebo nieco podobne ?

P.S. s tym datumom sorry, viem, ze som tam mal dat typ: date


Offline

Užívateľ
Užívateľ
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127 | 127
Bydlisko: Lehota pod ...

Ten typ stĺpca budeš musieť zmeniť. Dátumové funkcie potrebujú pre fungovanie správny typ.
Až potom má zmysel riešiť to radenie....
Takže najprv update na správny formát dátumu a potom change column na správny typ...


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 13.06.24
Príspevky: 488
Témy: 139 | 139
Bydlisko: Bytča
Napísal autor témyOffline : 17.09.2011 15:17 | Select zavisly na case aj pocte prispevkov v danom case

camo: mne to stenley napisal aj s mojim typom, je to OK
poradit nevies s tym problemom, ktory mam aktualne ?


Offline

Užívateľ
Užívateľ
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127 | 127
Bydlisko: Lehota pod ...

Aktuálne máš problém s typom mimo iné...
A napísal ti Stenley ako zmeniť typ stĺpca, alebo si tým myslel toto:
Kód:
WHERE STR_TO_DATE(datum, '%d.%m.%Y') >= SUBDATE(CURDATE(), INTERVAL 6 MONTH)

Stenley ti tu dokola píše, že ten typ je nanič a bolo by ho treba zmeniť.

Tú funkciu STR_TO_DATE(datum, '%d.m%.%Y') použi v update.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 13.06.24
Príspevky: 488
Témy: 139 | 139
Bydlisko: Bytča
Napísal autor témyOffline : 17.09.2011 16:17 | Select zavisly na case aj pocte prispevkov v danom case

camo: prosim ta, neries, co je vyriesene. Ved sa ta slusne pytam, ci mi nevies pomoct s tym triedenim podla avg(prispevok) ale nie za poslednych 60 dni, ale celkovo, ved som to tu jasne myslim napisal.
problem s typom NEMAM, neviem ako Ti to este mam napisat inak :(


Offline

Užívateľ
Užívateľ
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127 | 127
Bydlisko: Lehota pod ...

Myslím, že tá podmienka na tých 60 záznamov má byť v having. Ale či sa nemýlim neviem. Netestoval som to.

Kód:
SELECT nick_name, AVG(prispevok), count(*) pocet
FROM prispevky_table
GROUP BY nick_name
HAVING (select count(*) as pocet from prispevky_table group by nick_name where pocet > 60 and datum >= SUBDATE(NOW(), INTERVAL 6 MONTH))
ORDER BY AVG(prispevok) DESC


Na viac sa asi nezmôžem...

A som presvedčený, že máš problém s typom stĺpca!

EDIT: po 15 hodinách 53 minútach

Alebo skôr takto:
Kód:
select nick_name, avg(prispevok), count(*)
from prispevky_table t1
join (select nick_name meno2, count(*) pocet
                 from prispevky_table
                 where prispevky_table.datum >= SUBDATE(NOW(), INTERVAL 6 MONTH)
                 group by meno2
                 having pocet>60) t2
on t1.nick_name=t2.meno2;


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 13.06.24
Príspevky: 488
Témy: 139 | 139
Bydlisko: Bytča
Napísal autor témyOffline : 19.09.2011 9:34 | Select zavisly na case aj pocte prispevkov v danom case

camo, ten zapis posledny asi nebude dobry, pise mi chybu, zly syntax

ja som to zapisal takto podla teba:
Kód:
$poziadavkaOK2 = "SELECT nick_name, AVG(prispevok), count(*)
FROM prispevky_table  t1
join (SELECT nick_name meno2, count(*) pocet
                 from prispevky_table
                 WHERE STR_TO_DATE(cas, '%d.%m.%Y') >= SUBDATE(NOW(), INTERVAL 6 MONTH)
                 group by meno2
                 having pocet >= 60) t2
on t1.nick_name=t2.meno2)";

$resultOK2 = mysql_query($poziadavkaOK2) or die ("Stala sa chyba v spojeni s DB");


v phpmyadmin: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')
LIMIT 0, 60' at line 1

stenley, poradis ty ? hore som pisal, kde mam problem s tym tvojim zapisom


Offline

Užívateľ
Užívateľ
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127 | 127
Bydlisko: Lehota pod ...

Neviem kde sa tam bere ten limit. Nič také tam nemám. A zdá sa, že PhpMyAdmin má hlášky navlas rovnaké ako konzola, tak to skúšaj radšej tam. Je to rýchlejšie

Mne tá logika fungovala. Priemer z celkového príspevku a len tie ktoré mali počet za posledné obdobie väčší ako dané číslo. Ja som robil ale s číslami nie s dátumami a už vonkoncom som to nekonvertoval za jazdy...

EDIT:

Tá zátvorka na konci nemá byť! Neviem ako sa mi tam dostala...


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 13.06.24
Príspevky: 488
Témy: 139 | 139
Bydlisko: Bytča
Napísal autor témyOffline : 19.09.2011 14:16 | Select zavisly na case aj pocte prispevkov v danom case

limit vychadza asi z toho having pocet >= 60

dal som prec zatvorku: :> #1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause


Offline

Správca fóra
Správca fóra
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51 | 51
Bydlisko: Bratislava

skus toto:
Kód:
SELECT a.nick_name, AVG(prispevok) priemer
FROM prispevky_table a
INNER JOIN (
   SELECT nick_name, count(*) pocet
   FROM prispevky_table
   WHERE STR_TO_DATE(datum, '%d.%m.%Y') >= SUBDATE(CURDATE() , INTERVAL 6 MONTH)
   GROUP BY nick_name
   HAVING pocet >=60
) b
USING(nick_name)
GROUP BY a.nick_name
ORDER BY priemer DESC


_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Select zavisly na case aj pocte prispevkov v danom case

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127 | 127
Bydlisko: Lehota pod ...

Len tak pre istotu sa spýtam, aká je to verzia Mysql.
Lebo count(*) by mala pracovať aj bez group by.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 11.12.07
Prihlásený: 13.06.24
Príspevky: 488
Témy: 139 | 139
Bydlisko: Bytča
Napísal autor témyOffline : 19.09.2011 15:58 | Select zavisly na case aj pocte prispevkov v danom case

stenley, vyzera, ze je to OK, vdaka, este to skontrolujem .... ale asi hej, dalo tych istych ludi, ako predtym a spravne zoradilo (teda podla celkoveho priemeru) a vybralo pekne len ludi podla podmienky minimalneho poctu 60 za poslednych 6 mesiacov

// pridané po 12 minútach od posledného príspevku

camo píše:
Len tak pre istotu sa spýtam, aká je to verzia Mysql.
Lebo count(*) by mala pracovať aj bez group by.

Verzia MySQL klienta: 5.0.51a


 [ Príspevkov: 20 ] 


Select zavisly na case aj pocte prispevkov v danom case



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Ako pridat do playlistu prikaz na vypnuie hudby v danom case

v Ostatné programy

0

334

18.10.2012 19:54

Dadko

V tomto fóre nie sú ďalšie neprečítané témy.

Select v CASE je to mozne?

v Databázy

1

407

08.03.2012 16:41

GoodWill

V tomto fóre nie sú ďalšie neprečítané témy.

vypis zavisly na vypise predchadzajuceho vypisu

v Databázy

2

540

14.07.2011 22:59

jablko05

V tomto fóre nie sú ďalšie neprečítané témy.

typ grafickej karty v danom notebooku

v Notebooky a netbooky

2

467

26.11.2013 16:03

lenovacik

V tomto fóre nie sú ďalšie neprečítané témy.

Odosielanie e-mailov (vo veľkom počte)

v Backend

2

487

02.06.2013 19:30

DeiForm

V tomto fóre nie sú ďalšie neprečítané témy.

Zobrazenie po pocte vacsom ako 1

v Frontend

3

443

11.03.2010 19:04

Ďuri

V tomto fóre nie sú ďalšie neprečítané témy.

Rozdelenie textu po urcitom pocte znakov

v Backend

1

453

02.12.2008 17:29

stenley

V tomto fóre nie sú ďalšie neprečítané témy.

formular: presun <option> zo <select> do <select>

v Frontend

2

844

28.09.2009 15:27

tomast7

V tomto fóre nie sú ďalšie neprečítané témy.

zmenšovanie prispevkov

v Oznámenia a návrhy

6

1108

21.01.2010 19:26

shaggy

V tomto fóre nie sú ďalšie neprečítané témy.

Označenie príspevkov

v CMS

5

1355

15.09.2005 17:07

Spirit

V tomto fóre nie sú ďalšie neprečítané témy.

mazanie prispevkov

v Oznámenia a návrhy

17

2254

21.02.2008 14:56

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

Hodnotenie prispevkov

v Oznámenia a návrhy

10

1374

01.12.2008 22:38

tlacitko Enter

V tomto fóre nie sú ďalšie neprečítané témy.

Zaratavanie prispevkov

v CMS

2

668

27.07.2007 19:00

kajbo

V tomto fóre nie sú ďalšie neprečítané témy.

pocet prispevkov

v Oznámenia a návrhy

1

1042

31.01.2008 15:56

Peterson

V tomto fóre nie sú ďalšie neprečítané témy.

Mazanie príspevkov

v Oznámenia a návrhy

8

1312

04.11.2008 15:42

tommy1104

V tomto fóre nie sú ďalšie neprečítané témy.

Oznacovanie novych prispevkov

v Databázy

0

584

07.07.2011 18:14

Blackshadow



© 2005 - 2026 PCforum, edited by JanoF