Segunda-feira, 19 de Julho de 2010

Em Fevereiro colocamos aqui um post com algumas questões de SQL que poderiam ser colocadas numa entrevista.

Vamos tornar a abordar o problema, com a seguinte tabela:

mysql> select * from e;
+-------+-------+
| nome  | valor |
+-------+-------+
| josé  |    20 |
| joão  |    10 |
| rui   |     5 |
| pedro |     3 |
| josé  |     5 |
| pedro |    10 |
| luís  |    25 |
+-------+-------+
7 rows in set (0.00 sec)

 

Algo que costuma ser feito já depois das queries é perguntar aos candidatos quais os tipos de dados das duas colunas.

Para efeitos deste post, vamos assumir uma base de dados MySQL com uma tabela definida da seguinte forma:

create table e (
nome varchar(50),
valor int
) ENGINE=InnoDB;

INSERT INTO e (nome, valor) VALUES
('josé', 20),
('joão', 10),
('rui', 5),
('pedro', 3),
('josé', 5),
('pedro', 10),
('luís', 25)
;

 

Vamos analisar as queries que propusemos no nosso post anterior.

 

mysql> select sum(valor) from e;
+------------+
| sum(valor) |
+------------+
| 78         |
+------------+
1 row in set (0.40 sec)


É das queries mais simples e quase todos os candidatos a escrevem correctamente.

 

mysql> select nome, sum(valor) from e group by nome;
+-------+------------+
| nome  | sum(valor) |
+-------+------------+
| joão  |         10 |
| josé  |         25 |
| luís  |         25 |
| pedro |         13 |
| rui   |          5 |
+-------+------------+
5 rows in set (0.04 sec)


Quase todas as pessoas sabem como se faz, mas já se encontra alguns candidatos que trocam a ordem de algumas cláusulas, que se esquecem do group by, etc.

 

mysql> select nome from e group by nome having count(1) > 1;
+-------+
| nome  |
+-------+
| josé  |
| pedro |
+-------+
2 rows in set (0.00 sec)


Neste ponto sim, já começamos a perder muito boa gente.

 

mysql> select group_concat(distinct nome) from e;
+-----------------------------+
| group_concat(distinct nome) |
+-----------------------------+
| josé,joão,rui,pedro,luís    |
+-----------------------------+
1 row in set (0.00 sec)


Tipicamente já só acerta estas queries quem tem experiência intensiva com bases de dados.

Faz sentido, porque é perfeitamente viável trabalhar com bases de dados sem usar extensivamente tudo o que elas nos oferecem.

Não será de facto por não saber algo deste género que um candidato ficará pelo caminho, mas são perguntas como esta que permitem ir discernindo o tipo de uso que a pessoa dá à base de dados.

Perguntas como esta e não só: perguntas sobre as perguntas.

Numa entrevista não declaramos a base de dados, apenas a desenhamos num quadro ou numa folha de papel.

Depois de termos abordado várias queries, aí sim, abordam-se outras temáticas:


Há sempre mais qualquer coisa que a conversa traz, como por exemplo o entrevistado sugerir que o tipo de dados do valor deveria ser um INT(3)...



publicado por jac às 10:00
link do post | comentar | adicionar aos favoritos |

1 comentário:
De nervokid a 23 de Setembro de 2010 às 15:33
Q4 em Oracle: select tolist(distinct nome) from e;


Comentar post

Autores
pesquisar
 
Janeiro 2012
Dom
Seg
Ter
Qua
Qui
Sex
Sab

1
2
3
4
5
6
7

8
9
10
11
12
13
14

15
16
17
18
19
20
21

22
23
24
25
26
27
28

29
30
31



follow saposessions at http://twitter.com
posts recentes

Integração do Blog de Dev...

Vídeos da LXMLS

Evento HTML5 PT - 3 de No...

Prémios SAPO 2011

Extensão de prazo de subm...

Candidaturas SAPO Labs

Portuguese Perl Workshop

16 anos

Fun with Dead Languages -...

CPA 2011

arquivos

Janeiro 2012

Dezembro 2011

Outubro 2011

Setembro 2011

Agosto 2011

Julho 2011

Junho 2011

Maio 2011

Abril 2011

Março 2011

Janeiro 2011

Outubro 2010

Setembro 2010

Agosto 2010

Julho 2010

Junho 2010

Maio 2010

Abril 2010

Março 2010

Fevereiro 2010

Janeiro 2010

Dezembro 2009

Novembro 2009

Outubro 2009

Setembro 2009

Agosto 2009

Julho 2009

Junho 2009

Maio 2009

Abril 2009

Março 2009

Fevereiro 2009

tags

todas as tags

últ. comentários
Boas, Apesar deste post já ser um pouco antigo gos...
Por sinal já foi desenvolvido e encontra-se neste ...
A informação que faltava está agora aqui: http://d...
A informação já está aqui: http://developers.blogs...
Boas,Onde é que isto vai ser? Há algum critério pa...
blogs SAPO
subscrever feeds