Pregunta 34 bloque I y II
-
- Usuario registrado
- Mensajes: 322
- Registrado: 06 Jul 2005, 13:35
- Agradecido: 0
- Agradecimiento recibido: 0
Pregunta 34 bloque I y II
Buenas,
tengo una duda de por qué es la buena la C? Alguien me puede instruir?
Creia que siempre que hubiera un sum necesitaria un group by, no?
Muchas gracias
tengo una duda de por qué es la buena la C? Alguien me puede instruir?
Creia que siempre que hubiera un sum necesitaria un group by, no?
Muchas gracias
- Julio
- PreparaTIC XVIII
- Mensajes: 381
- Registrado: 28 May 2007, 12:42
- Agradecido: 0
- Agradecimiento recibido: 0
Bueno, siempre no, si en la SELECT solo se selecciona un SUM(campo), el GROUP BY se considera implícito, pero en este caso no es así porque también se selecciona un campo, así que para mí es evidente que la sentencia está mal.
Yo no le veo ningún defecto a la b), la a) está mal porque según ISO 9075 solo se puede poner un * así a palo seco si es lo único que se selecciona, si no hay que especificar el "SP."
Si alguien necesita el estándar ISO SQL, de aquí se puede bajar un draft bastante avanzado, suficiente de sobra para esto de lo que hablamos, que viene en la parte 2 - Foundation. La especificación de la SELECT se puede ver en el punto 7.12
Yo no le veo ningún defecto a la b), la a) está mal porque según ISO 9075 solo se puede poner un * así a palo seco si es lo único que se selecciona, si no hay que especificar el "SP."
Si alguien necesita el estándar ISO SQL, de aquí se puede bajar un draft bastante avanzado, suficiente de sobra para esto de lo que hablamos, que viene en la parte 2 - Foundation. La especificación de la SELECT se puede ver en el punto 7.12
-
- Usuario registrado
- Mensajes: 322
- Registrado: 06 Jul 2005, 13:35
- Agradecido: 0
- Agradecimiento recibido: 0
Teto y dirección de impugnación?
He cogigo un texto de impugnación del TIC A. En el TIC B es igual??
Y se remite a la dirección cps@inap.map.es
D. ..., con DNI ..., con domicilio en calle ... de la localidad de ..., teléfono ..., y en calidad de opositor a las pruebas selectivas para el ingreso en el Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
EXPONE:
que en relación con la pregunta número 34 del Bloque I y II del Primer Ejercicio de las Pruebas selectivas para el ingreso en el Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado celebradas el pasado 14 de Junio, ruega se tengan por presentadas y se tomen en consideración las siguientes
ALEGACIONES:
1º.-
2º.-
SOLICITA:
que la pregunta 34 del Bloque I y II sea anulada.
Madrid, a 23 de Junio de 2008.
Fdo:
...
A la atención de la Comisión Permanente de Selección para el ingreso en el Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
Y se remite a la dirección cps@inap.map.es
D. ..., con DNI ..., con domicilio en calle ... de la localidad de ..., teléfono ..., y en calidad de opositor a las pruebas selectivas para el ingreso en el Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
EXPONE:
que en relación con la pregunta número 34 del Bloque I y II del Primer Ejercicio de las Pruebas selectivas para el ingreso en el Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado celebradas el pasado 14 de Junio, ruega se tengan por presentadas y se tomen en consideración las siguientes
ALEGACIONES:
1º.-
2º.-
SOLICITA:
que la pregunta 34 del Bloque I y II sea anulada.
Madrid, a 23 de Junio de 2008.
Fdo:
...
A la atención de la Comisión Permanente de Selección para el ingreso en el Cuerpo de Gestión de Sistemas e Informática de la Administración del Estado
- Julio
- PreparaTIC XVIII
- Mensajes: 381
- Registrado: 28 May 2007, 12:42
- Agradecido: 0
- Agradecimiento recibido: 0
La dirección de correo es la que pones. De todas formas yo prefiero enviarlo por registro (trabajo en un Ministerio y tengo el registro a dos pasos) porque así uno se asegura de que les llega.
Yo he puesto las siguientes alegaciones:
1º.- que en dicha pregunta número 34 (Bloques I y II) se solicitaba indicar qué sentencia SQL está formada correctamente.
2º.- que la plantilla provisional de respuestas publicada indica que se trata de la opción c) SELECT SP.IdP, sum(distinct SP.Cant) from SP
3º.- que de acuerdo con el estándar SQL (ISO 9075:2003), al no incluir una cláusula GROUP BY, la sentencia anterior da lugar a una tabla no agrupada.
4º.- que de acuerdo con el estándar SQL (ISO 9075:2003), al tratarse de una tabla no agrupada, si uno de los campos seleccionados está incluido dentro una función agregada (en este caso el campo SP.Cant está incluído en la función agregada “sum”), entonces TODOS los campos seleccionados deben aparecer dentro de alguna función agregada, lo cual no se da porque el primer campo seleccionado es SP.IdP, que no está incluido en ninguna función agregada.
5º.- que de acuerdo con lo explicado, la sentencia SQL dada por el apartado c) no está formada correctamente según el estándar SQL. De hecho es sencillo comprobar que dará un error de sintaxis al ser probada en el analizador de consultas de cualquier SGBD actual.
6º.- que la misma argumentación permite comprobar que la respuesta d) tampoco sería válida.
Se incluye a continuación la parte de la especificación del formato para la cláusula SELECT según el estándar ISO 9075:2003 necesaria para comprobar las siguientes alegaciones (punto 7.12 del citado estándar):
7º.- que de acuerdo con esta especificación, si uno de los campos seleccionados en una cláusula SELECT es un asterisco (*), entonces no pueden aparecer más campos en la cláusula (definición de “<select list>”).
8º.- que de acuerdo a lo anterior, la sentencia especificada por la respuesta a) del formulario de examen estaría incorrectamente formada.
9º.- que de acuerdo con esta especificación, la sentencia especificada por la respuesta b) del formulario está correctamente formada, pues se selecciona un “qualified asterisk” y una “value expression”, concretamente una “numeric value expression”, especificada por el punto 6.26 del estándar referido anteriormente.
10º.- que según lo expuesto, se entiende que hay una errata en la plantilla provisional de respuestas, puesto que la única sentencia correctamente formada de las que aparecen en el formulario de examen es la b) y no la c)
Yo he puesto las siguientes alegaciones:
1º.- que en dicha pregunta número 34 (Bloques I y II) se solicitaba indicar qué sentencia SQL está formada correctamente.
2º.- que la plantilla provisional de respuestas publicada indica que se trata de la opción c) SELECT SP.IdP, sum(distinct SP.Cant) from SP
3º.- que de acuerdo con el estándar SQL (ISO 9075:2003), al no incluir una cláusula GROUP BY, la sentencia anterior da lugar a una tabla no agrupada.
4º.- que de acuerdo con el estándar SQL (ISO 9075:2003), al tratarse de una tabla no agrupada, si uno de los campos seleccionados está incluido dentro una función agregada (en este caso el campo SP.Cant está incluído en la función agregada “sum”), entonces TODOS los campos seleccionados deben aparecer dentro de alguna función agregada, lo cual no se da porque el primer campo seleccionado es SP.IdP, que no está incluido en ninguna función agregada.
5º.- que de acuerdo con lo explicado, la sentencia SQL dada por el apartado c) no está formada correctamente según el estándar SQL. De hecho es sencillo comprobar que dará un error de sintaxis al ser probada en el analizador de consultas de cualquier SGBD actual.
6º.- que la misma argumentación permite comprobar que la respuesta d) tampoco sería válida.
Se incluye a continuación la parte de la especificación del formato para la cláusula SELECT según el estándar ISO 9075:2003 necesaria para comprobar las siguientes alegaciones (punto 7.12 del citado estándar):
Código: Seleccionar todo
<query specification> ::=
SELECT [ <set quantifier> ] <select list> <table expression>
<select list> ::=
<asterisk>
| <select sublist> [ { <comma> <select sublist> }... ]
<select sublist> ::=
<derived column>
| <qualified asterisk>
<qualified asterisk> ::=
<asterisked identifier chain> <period> <asterisk>
| <all fields reference>
<asterisked identifier chain> ::=
<asterisked identifier> [ { <period> <asterisked identifier> }... ]
<asterisked identifier> ::= <identifier>
<derived column> ::= <value expression> [ <as clause> ]
8º.- que de acuerdo a lo anterior, la sentencia especificada por la respuesta a) del formulario de examen estaría incorrectamente formada.
9º.- que de acuerdo con esta especificación, la sentencia especificada por la respuesta b) del formulario está correctamente formada, pues se selecciona un “qualified asterisk” y una “value expression”, concretamente una “numeric value expression”, especificada por el punto 6.26 del estándar referido anteriormente.
10º.- que según lo expuesto, se entiende que hay una errata en la plantilla provisional de respuestas, puesto que la única sentencia correctamente formada de las que aparecen en el formulario de examen es la b) y no la c)
- Julio
- PreparaTIC XVIII
- Mensajes: 381
- Registrado: 28 May 2007, 12:42
- Agradecido: 0
- Agradecimiento recibido: 0
Sí, emejou, sí lo permite, lo comprobé en el estándar, lo que pasa es que tampoco he querido meter medio estándar en las alegaciones porque iba a quedar muy engorroso y eso dificulta la lectura, he preferido limitarme a que quede claro lo del *, que quizás es menos conocido, pero bueno, a lo mejor es buena idea que alguno que quiera impugnar incluya esa parte, así tienen un poco de todo para tener claras las cosas.
-
- Usuario registrado
- Mensajes: 5
- Registrado: 26 Dic 2007, 15:05
- Agradecido: 0
- Agradecimiento recibido: 0
Hola es la primera vez que escribo en este foro,
estoy mirando tambien las impugnables.
Yo tambien he puesto la b y estoy de acuerdo en lo que decis pero me hecho un ejemplillo es postgres y tanto a) como b) producen el mismo resultado ...
=# select *, (sp.cant/12) from sp;
ids | idp | cant | ?column?
-----+-----+------+--------------------
1 | 1 | 1 | 0.0833333333333333
1 | 2 | 2 | 0.166666666666667
2 | 1 | 3 | 0.25
2 | 2 | 4 | 0.333333333333333
(4 filas)
=# select sp.*, (sp.cant/12) from sp;
ids | idp | cant | ?column?
-----+-----+------+--------------------
1 | 1 | 1 | 0.0833333333333333
1 | 2 | 2 | 0.166666666666667
2 | 1 | 3 | 0.25
2 | 2 | 4 | 0.333333333333333
(4 filas)
estoy mirando tambien las impugnables.
Yo tambien he puesto la b y estoy de acuerdo en lo que decis pero me hecho un ejemplillo es postgres y tanto a) como b) producen el mismo resultado ...
=# select *, (sp.cant/12) from sp;
ids | idp | cant | ?column?
-----+-----+------+--------------------
1 | 1 | 1 | 0.0833333333333333
1 | 2 | 2 | 0.166666666666667
2 | 1 | 3 | 0.25
2 | 2 | 4 | 0.333333333333333
(4 filas)
=# select sp.*, (sp.cant/12) from sp;
ids | idp | cant | ?column?
-----+-----+------+--------------------
1 | 1 | 1 | 0.0833333333333333
1 | 2 | 2 | 0.166666666666667
2 | 1 | 3 | 0.25
2 | 2 | 4 | 0.333333333333333
(4 filas)
- Julio
- PreparaTIC XVIII
- Mensajes: 381
- Registrado: 28 May 2007, 12:42
- Agradecido: 0
- Agradecimiento recibido: 0
Sí, jp, los SGBD no suelen implementar SQL siendo 100% fieles al estándar, pero en el examen nos preguntan por el SQL estándar (ISO 9075), y por lo que he puesto por ahí arriba, según el estándar si pones un * solitario en la SELECT ya no puedes poner nada más, si quieres poner algo más tienes que ponerlo con el cualificador, en este caso "SP.", que es lo que hace la b)