Ranking ganhadores

View: New views
5 Messages — Rating Filter:   Alert me  

Ranking ganhadores

by Leonardo Barbosa-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Galerinha, como faço para selecionar o ranking de ganhadores e perdedores no PG ??? ME parece que a função RANK não funciona aqui...

CREATE TABLE "Partida"
(
  "PartidaId" integer NOT NULL DEFAULT nextval('partida_partidaid_seq'::regclass),
  "Ganhador" integer,
  "Perdedor" integer,
  "Inicio" timestamp(0) without time zone,
  "Fim" timestamp(0) without time zone,
  "LadoCubo" character(1) NOT NULL,
  "Jogador1" integer NOT NULL,
  "Jogador2" integer NOT NULL,
  CONSTRAINT "PartidaId" PRIMARY KEY ("PartidaId"),
  CONSTRAINT fk_matricula_ganhador FOREIGN KEY ("Ganhador")
      REFERENCES "Jogador" ("Matricula") MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fk_matricula_jogador1 FOREIGN KEY ("Jogador1")
      REFERENCES "Jogador" ("Matricula") MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fk_matricula_jogador2 FOREIGN KEY ("Jogador2")
      REFERENCES "Jogador" ("Matricula") MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fk_matricula_perdedor FOREIGN KEY ("Perdedor")
      REFERENCES "Jogador" ("Matricula") MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT "Partida_chk" CHECK ("Ganhador" <> "Perdedor")
)
WITH (OIDS=FALSE);
ALTER TABLE "Partida" OWNER TO postgres;


--
Atenciosamente,

Leonardo Barbosa


_______________________________________________
pgbr-geral mailing list
pgbr-geral@...
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: Ranking ganhadores

by Osvaldo Kussama :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

2009/7/3 Leonardo Barbosa <leogbt@...>:

> Galerinha, como faço para selecionar o ranking de ganhadores e perdedores no
> PG ??? ME parece que a função RANK não funciona aqui...
>
> CREATE TABLE "Partida"
> (
>   "PartidaId" integer NOT NULL DEFAULT
> nextval('partida_partidaid_seq'::regclass),
>   "Ganhador" integer,
>   "Perdedor" integer,
>   "Inicio" timestamp(0) without time zone,
>   "Fim" timestamp(0) without time zone,
>   "LadoCubo" character(1) NOT NULL,
>   "Jogador1" integer NOT NULL,
>   "Jogador2" integer NOT NULL,
>   CONSTRAINT "PartidaId" PRIMARY KEY ("PartidaId"),
>   CONSTRAINT fk_matricula_ganhador FOREIGN KEY ("Ganhador")
>       REFERENCES "Jogador" ("Matricula") MATCH SIMPLE
>       ON UPDATE NO ACTION ON DELETE NO ACTION,
>   CONSTRAINT fk_matricula_jogador1 FOREIGN KEY ("Jogador1")
>       REFERENCES "Jogador" ("Matricula") MATCH SIMPLE
>       ON UPDATE NO ACTION ON DELETE NO ACTION,
>   CONSTRAINT fk_matricula_jogador2 FOREIGN KEY ("Jogador2")
>       REFERENCES "Jogador" ("Matricula") MATCH SIMPLE
>       ON UPDATE NO ACTION ON DELETE NO ACTION,
>   CONSTRAINT fk_matricula_perdedor FOREIGN KEY ("Perdedor")
>       REFERENCES "Jogador" ("Matricula") MATCH SIMPLE
>       ON UPDATE NO ACTION ON DELETE NO ACTION,
>   CONSTRAINT "Partida_chk" CHECK ("Ganhador" <> "Perdedor")
> )
> WITH (OIDS=FALSE);
> ALTER TABLE "Partida" OWNER TO postgres;
>


Qual versão do PostgreSQL você está utilizando?
A função rank() foi introduzida apenas na versão 8.4.0.
http://www.postgresql.org/docs/8.4/interactive/functions-window.html

Osvaldo
_______________________________________________
pgbr-geral mailing list
pgbr-geral@...
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: Ranking ganhadores

by Leonardo Barbosa-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Como faço na 8.3 Osvaldo ??

On Fri, Jul 3, 2009 at 3:24 PM, Osvaldo Kussama <osvaldo.kussama@...> wrote:
2009/7/3 Leonardo Barbosa <leogbt@...>:
> Galerinha, como faço para selecionar o ranking de ganhadores e perdedores no
> PG ??? ME parece que a função RANK não funciona aqui...
>
> CREATE TABLE "Partida"
> (
>   "PartidaId" integer NOT NULL DEFAULT
> nextval('partida_partidaid_seq'::regclass),
>   "Ganhador" integer,
>   "Perdedor" integer,
>   "Inicio" timestamp(0) without time zone,
>   "Fim" timestamp(0) without time zone,
>   "LadoCubo" character(1) NOT NULL,
>   "Jogador1" integer NOT NULL,
>   "Jogador2" integer NOT NULL,
>   CONSTRAINT "PartidaId" PRIMARY KEY ("PartidaId"),
>   CONSTRAINT fk_matricula_ganhador FOREIGN KEY ("Ganhador")
>       REFERENCES "Jogador" ("Matricula") MATCH SIMPLE
>       ON UPDATE NO ACTION ON DELETE NO ACTION,
>   CONSTRAINT fk_matricula_jogador1 FOREIGN KEY ("Jogador1")
>       REFERENCES "Jogador" ("Matricula") MATCH SIMPLE
>       ON UPDATE NO ACTION ON DELETE NO ACTION,
>   CONSTRAINT fk_matricula_jogador2 FOREIGN KEY ("Jogador2")
>       REFERENCES "Jogador" ("Matricula") MATCH SIMPLE
>       ON UPDATE NO ACTION ON DELETE NO ACTION,
>   CONSTRAINT fk_matricula_perdedor FOREIGN KEY ("Perdedor")
>       REFERENCES "Jogador" ("Matricula") MATCH SIMPLE
>       ON UPDATE NO ACTION ON DELETE NO ACTION,
>   CONSTRAINT "Partida_chk" CHECK ("Ganhador" <> "Perdedor")
> )
> WITH (OIDS=FALSE);
> ALTER TABLE "Partida" OWNER TO postgres;
>


Qual versão do PostgreSQL você está utilizando?
A função rank() foi introduzida apenas na versão 8.4.0.
http://www.postgresql.org/docs/8.4/interactive/functions-window.html

Osvaldo
_______________________________________________
pgbr-geral mailing list
pgbr-geral@...
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



--
Atenciosamente,

Leonardo Barbosa


_______________________________________________
pgbr-geral mailing list
pgbr-geral@...
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: Ranking ganhadores

by Osvaldo Kussama :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

2009/7/3 Leonardo Barbosa <leogbt@...>:
> Como faço na 8.3 Osvaldo ??
>


Talvez algo do tipo:

SELECT "Ganhador", count(*) as vitorias FROM "Partida" GROUP BY
"Ganhador" ORDER BY vitorias DESC;
SELECT "Perdedor",  count(*) as derrotas FROM "Partida" GROUP BY
"Perdedor" ORDER BY derrotas DESC;

Não sei como são seus dados então pode ser que no lugar de
"Ganhador"/"Perdedor" você tenha que usar "Jogador1"/"Jogador2".
Como você tem um campo "Fim" talvez queira filtrar apenas as partidas
encerradas.
Não sei se existe em seu modelo o caso de empate e, caso exista, de
que maneira está registrado.

Osvaldo
_______________________________________________
pgbr-geral mailing list
pgbr-geral@...
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: Ranking ganhadores

by Leonardo Barbosa-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Perfeito Osvaldo, consegui da seguinte maneira:

SELECT "Ganhador", count("Ganhador") as Vitorias FROM "Partida" where "Ganhador" is not null group by "Ganhador" order by vitorias desc

Muito obrigado, cara! Valeu mesmo!

2009/7/3 Osvaldo Kussama <osvaldo.kussama@...>
2009/7/3 Leonardo Barbosa <leogbt@...>:
> Como faço na 8.3 Osvaldo ??
>


Talvez algo do tipo:

SELECT "Ganhador", count(*) as vitorias FROM "Partida" GROUP BY
"Ganhador" ORDER BY vitorias DESC;
SELECT "Perdedor",  count(*) as derrotas FROM "Partida" GROUP BY
"Perdedor" ORDER BY derrotas DESC;

Não sei como são seus dados então pode ser que no lugar de
"Ganhador"/"Perdedor" você tenha que usar "Jogador1"/"Jogador2".
Como você tem um campo "Fim" talvez queira filtrar apenas as partidas
encerradas.
Não sei se existe em seu modelo o caso de empate e, caso exista, de
que maneira está registrado.

Osvaldo
_______________________________________________
pgbr-geral mailing list
pgbr-geral@...
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



--
Atenciosamente,

Leonardo Barbosa


_______________________________________________
pgbr-geral mailing list
pgbr-geral@...
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral