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

Rang lista i rangiranje takmičara sa istim brojem bodova

[es] :: MySQL :: Rang lista i rangiranje takmičara sa istim brojem bodova

[ Pregleda: 2341 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bloker
R. Srpska

Član broj: 79958
Poruke: 216
*.telrad.net.



+3 Profil

icon Rang lista i rangiranje takmičara sa istim brojem bodova05.01.2011. u 18:48 - pre 161 meseci
Da li mogu ovako nešto da uradim pomoću sql-a..
Naime u bazi imam listu takmičara i broj osvojenih bodova
Ovako nešto:
Code:

takmičar          bodovi

takm1             5
takm2             3
takm3             4
takm4             3
takm5             2


e sada mi treba da na neki način dodijelim osvojena mjesta ovim takmičarima..
Code:

takmičar         osvojeno mjesto

takm1             1
takm3             2
takm2             3
takm4             3
takm5             5


(takmičar 2 i 4 imaju isti broj bodova tako da su u ovom slučaju zauzeli 3. mjesto, a sledeći takmičar je zauzeo 5. mjesto)

u bazi ću imati i po 30 takmičara, a od njih će biti po 3 ili više sa istim brojem bodova tako da oni moraju imati isto osvojeno mjesto..

Treba mi bilo kakvo rješenje za ovaj problem ili bar neka ideja..

Hvala,
Milenko
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Rang lista i rangiranje takmičara sa istim brojem bodova05.01.2011. u 20:36 - pre 161 meseci
u sql-u uradis order by bodovi desc, i onda iterises kroz rezultat "rucno" i kada se promeni broj bodova povecas mesto za jedan .. ima fora da to uradis sa varijablama u mysql-u ali je problem sto je to resenje koje "ne mora da radi posle upgrade-a", dakle nacin na koji radi execution gde se promenjljive menjaju moze da se promeni bez najave tako da ti odradis upgrade i odjednom ti upit vise ne radi ... ali generalno bi to islo otprilike ovako

Code:

mysql> insert into t3 values ('takm1', 5), ('takm2', 3), ('takm3', 4), ('takm4', 3), ('takm5', 2);
Query OK, 5 rows affected (0.02 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> select * from t3 order by bod desc;
+-------+------+
| takm  | bod  |
+-------+------+
| takm1 |    5 |
| takm3 |    4 |
| takm2 |    3 |
| takm4 |    3 |
| takm5 |    2 |
+-------+------+
5 rows in set (0.00 sec)


mysql> set @mesto=0; set @prethodni=0; select takm,bod, if(@prethodni=bod,@mesto,@mesto:=@mesto+1) as mesto, @prethodni:=bod as ignorisi from t3 order by bod desc;
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

+-------+------+-------+----------+
| takm  | bod  | mesto | ignorisi |
+-------+------+-------+----------+
| takm1 |    5 |     1 |        5 |
| takm3 |    4 |     2 |        4 |
| takm2 |    3 |     3 |        3 |
| takm4 |    3 |     3 |        3 |
| takm5 |    2 |     4 |        2 |
+-------+------+-------+----------+
5 rows in set (0.00 sec)

mysql> 


 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Rang lista i rangiranje takmičara sa istim brojem bodova05.01.2011. u 20:40 - pre 161 meseci
ako hoces 12335 a ne 12334 onda bi islo
Code:

mysql> set @mesto=0; set @mm=1; set @prethodni=0; select takm,bod, if(@prethodni=bod,@mesto,@mesto:=@mm) as mesto, (@mm:=@mm+1)-1 as rbr, @prethodni:=bod as ignorisi from t3 order by bod desc;
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

+-------+------+-------+------+----------+
| takm  | bod  | mesto | rbr  | ignorisi |
+-------+------+-------+------+----------+
| takm1 |    5 |     1 |    1 |        5 |
| takm3 |    4 |     2 |    2 |        4 |
| takm2 |    3 |     3 |    3 |        3 |
| takm4 |    3 |     3 |    4 |        3 |
| takm5 |    2 |     5 |    5 |        2 |
+-------+------+-------+------+----------+
5 rows in set (0.00 sec)

mysql> 


 
Odgovor na temu

bloker
R. Srpska

Član broj: 79958
Poruke: 216
*.telrad.net.



+3 Profil

icon Re: Rang lista i rangiranje takmičara sa istim brojem bodova06.01.2011. u 15:35 - pre 161 meseci
Radi ok.. Hvala..
Našao sam neki sql kod za sortiranje i ovdje
http://www.1keydata.com/sql/sql-rank.html
koji isto ok radi..
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Rang lista i rangiranje takmičara sa istim brojem bodova06.01.2011. u 16:07 - pre 161 meseci
uh .. da .. moze i tako samo, to je jos gadnije ... (doduse, uvek ce raditi ) ...

Code:

SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_Rank
FROM Total_Sales a1, Total_Sales a2
WHERE a1.Sales <= a2.Sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)
GROUP BY a1.Name, a1.Sales
ORDER BY a1.Sales DESC, a1.Name DESC;


kao sto rekoh, najbrze je da odradis na klijentu
 
Odgovor na temu

[es] :: MySQL :: Rang lista i rangiranje takmičara sa istim brojem bodova

[ Pregleda: 2341 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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