GSAK - Desafios


Para além do canivete suíço do geocaching, este espaço serve para discussão de outros aplicativos de gestão de bases de dados

Moderadores: hulkman, migueis

Avatar do Utilizador

Geopt Proud Member
Geopt Proud Member

Mensagens: 30152

Registado: domingo 25 abr 2010, 01:07

Localização: Lisboa

Mensagem Post: #31 a sábado 24 ago 2019, 22:43 

Re: GSAK - Desafios

Uma ajuda com o SQL...
Quero fazer uma query que me devolva o state onde um geocacher tem mais caches feitas e o seu número.
Consigo devolver o número de caches do state com mais caches feitas mas não o state em sim.

  Código:
select gid,(SELECT MAX (ct) FROM (SELECT state, COUNT(*) as ct FROM logs, caches where lparent=code and lType in ('Found it','Attended','Webcam Photo Taken') and lownerid=gid GROUP BY state)) as max from geocacherinfo where gid in (1801552, 2203219)

1801552   2929
2203219   4620

Como é que consigo devolver também o state?

No caso Lisboa para mim e Setúbal para o Idílio, como se pode comprovar no query abaixo

  Código:
SELECT lownerid, state,COUNT(*) as ct FROM logs, caches where lparent=code and lType in ('Found it','Attended','Webcam Photo Taken') and lownerid in (1801552, 2203219) GROUP BY lownerid, state order by ct desc limit 5;

2203219   Setúbal   4620
1801552   Lisboa   2929
1801552   Faro   589
2203219   Faro   498
1801552   Setúbal   493
Imagem Imagem
Avatar do Utilizador

Geopt Lackey
Geopt Lackey

Mensagens: 8700

Registado: quinta 09 dez 2010, 13:38

Mensagem Post: #32 a sábado 31 ago 2019, 23:05 

Re: GSAK - Desafios

  Código:
SELECT T1.*, T6.distrito As TopDistritoFounds, T6.Founds As TopDistritoFoundsNr FROM 
(SELECT G.Guid, G.Nome FROM Geocachers G WHERE G.country = 'Portugal' ) T1
LEFT OUTER JOIN
(SELECT Guid, distrito, Founds FROM (SELECT G.Guid, C.distrito, COUNT(0) AS 'Founds', ROW_NUMBER() OVER (PARTITION BY G.Guid ORDER BY COUNT(0) DESC) N FROM Geocachers G INNER JOIN Logs L ON L.loggeocacherGuid = G.Guid INNER JOIN Caches C ON L.CacheGuid = C.cacheGuid WHERE G.country = 'Portugal' AND (logType = 2 OR logType = 10 OR logType = 11) GROUP BY G.Guid, C.distrito) M WHERE N = 1) T6 ON T1.Guid = T6.Guid
Imagem Imagem Imagem
Avatar do Utilizador

Geopt Proud Member
Geopt Proud Member

Mensagens: 30152

Registado: domingo 25 abr 2010, 01:07

Localização: Lisboa

Mensagem Post: #33 a domingo 01 set 2019, 00:51 

Re: GSAK - Desafios

IDILIO49 Escreveu:
  Código:
SELECT T1.*, T6.distrito As TopDistritoFounds, T6.Founds As TopDistritoFoundsNr FROM 
(SELECT G.Guid, G.Nome FROM Geocachers G WHERE G.country = 'Portugal' ) T1
LEFT OUTER JOIN
(SELECT Guid, distrito, Founds FROM (SELECT G.Guid, C.distrito, COUNT(0) AS 'Founds', ROW_NUMBER() OVER (PARTITION BY G.Guid ORDER BY COUNT(0) DESC) N FROM Geocachers G INNER JOIN Logs L ON L.loggeocacherGuid = G.Guid INNER JOIN Caches C ON L.CacheGuid = C.cacheGuid WHERE G.country = 'Portugal' AND (logType = 2 OR logType = 10 OR logType = 11) GROUP BY G.Guid, C.distrito) M WHERE N = 1) T6 ON T1.Guid = T6.Guid

Thanks. Tem aí instruções que nem conhecia...Mas não vai funcionar em sqlite...
Imagem Imagem
Avatar do Utilizador

Geopt Lackey
Geopt Lackey

Mensagens: 8700

Registado: quinta 09 dez 2010, 13:38

Mensagem Post: #34 a domingo 01 set 2019, 00:55 

Re: GSAK - Desafios

jasafara Escreveu:Mas não vai funcionar em sqlite...

Deve ter qualquer coisa equivalente...
Imagem Imagem Imagem
Anterior

Voltar para GSAK

Quem está ligado:

Utilizadores a ver este Fórum: Nenhum utilizador registado e 0 visitantes

Powered by PHPBB - Geopt.org 2013