0% encontró este documento útil (0 votos)
35 vistas9 páginas

Consultas XQuery para Videojuegos

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
35 vistas9 páginas

Consultas XQuery para Videojuegos

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

XQUERY

Created @February 8, 2024 4:14 PM

Tags

Ejercicio 1
Mostrar una lista de nombre de juegos cuyo contador de usuarios no
contenga ningún valor (NA).

for $game in /games/game


where $game/user_count = "NA"
return data($game/name)

Ejercicio 2:
Mostrar los nombres de los juegos cuyo género sea distinto a “Misc”.

let $games:=datdoc("games.xml")
for $name in $games/games/game/name
where $name/@genre!="Misc"
return data($name)

for $game in/games/game


where data($game/name/@genre)!="Misc"
return data($game/name)

Ejercicio 3:
Selecciona aquellas plataformas de los videojuegos desarrollados
por Nintendo.

XQUERY 1
distinct-values(
for $game in /games/game
where $game/developer = "Nintendo"
return data($game/platform)
)

Ejercicio 4:
Muestra el número de jugadores en Japón de aquellos juegos cuyo
desarrollador sea “Good Science Studio”.

for $game in/games/game


where $game/developer ="Good Science Studio"
return $game/jp_players

Ejercicio 5:
Muestra los nombres de los videojuegos ordenados por año de
lanzamiento.

for $game in/games/game


where $game/name/@year!='N/A'
order by $game/name/@year descending
return concat(data($game/name), " (Año ", $game/name/@year, "

Ejercicio 6:
Muestra aquellas compañías “publisher” de cada videojuego, pero
ordena los resultados por las evaluaciones de los usuarios.

for $game in/games/game


order by $game/user_score descending
where $game/user_score != "tbd"
return concat(data($game/name), " Publisher: " ,$game/publis

XQUERY 2
"TBD" significa "To Be Determined" o "Por Determinar". Se usa cuando la
puntuación de un juego aún no ha sido determinada o no está disponible en el
momento en que se realiza la consulta.

EJERCICIOS INVENTADOS
EJ1
Nombre y año de lanzamiento de todos los juegos

for $game in //game


return concat(data($game/name)," => Año de lanzamiento: ",

EJ2
Juegos lanzados después de 2010

for $game in/games/game


where $game/name/@year!='N/A'and $game/name/@year > 2010
order by $game/name/@year ascending
return concat(data($game/name), " => ", $game/name/@year)

no sale si pones primero >2010 y luego ≠ N/A

EJ3
Muestra el número total de juegos publicados por "Electronic Arts".

let $games := doc("games.xml")


let $num_publicados := count($games/games/game[publisher = "El
return $num_publicados

let $games := /games/game


let $num_publicados := count($games[publisher = "Electronic A
return $num_publicados

XQUERY 3
7️⃣ Crea un elemento llamado “libro” que contenga el nombre del
desarrollador del juego “Wii Sports”

for $i in games/game
where $i/name = "Wii Sports"
return <libro>{data($i/developer)}</libro>

Para crear un elemento nuevo dentro de un nodo, escribimos la consulta


normal, para seleccionar concretamente dónde queremos introducirlo, y lo
creamos mediante el return.

💡 return <nombreNuevoElemento>
</nombreNuevoElemento>
{data($i/contenidoDelElemento)}

8️⃣ Por cada juego cuyo número de jugadores totales sea superior a 12,
crea un elemento llamado “plataforma” que contenga el nombre de
la plataforma.

for $i in games/game
where $i/global_players > 12
return element plataforma {data($i/platform)}

Otra manera de crear un elemento es usando ‘’Element’’, donde nos ahorramos


definir el nuevo elemento con <>.

9️⃣ Crea un elemento llamado “libro” que contenga el desarrollador del


juego con id “2007”.

XQUERY 4
for $i in games/game
where $i/@id = "2007"
return element libroo {data($i/developer)}

🔟 Crea un elemento llamado “element” que contenga el número total


de jugadores del juego llamado “Kinect Adventures!”.

for $i in games/game
where $i/name = "Kinect Adventures!"
return element element {data($i/global_players)}

for $i in games/game
where $i/name = "Kinect Adventures!"
return <element> {data($i/global_players)} </element>

1️⃣ Muestra los videojuegos lanzados en el año 2012.

for $i in games/game
where $i/name/@year = "2012"
return $i/name

2️⃣ Crea una lista de elementos con nombre “videojuego”, que contenga
el “id” de aquellos videojuegos lanzados en el año 2000.

XQUERY 5
let $list := (

for $i in games/game
where $i/name/@year = "2000"
return element videojuego {data($i/@id)}

) return $list

En este caso no tengo que especificar en el return


$i/game/@id y simplemente puedo poner
$i/@id porque me he quedado en el for justo en el nodo game,
automaticamente que debe buscar el atributo de game

3️⃣ Muestra una lista de elementos “videojuego” que contengan el


nombre de los videojuegos cuyos ids se comprenden entre los
valores 100-200 (ambos inclusive).

let $list := (

for $i in games/game
where $i/@id >= 100 and $i/@id <= 200
return element videojuego {data($i/name)}

) return $list

Observamos la comparacion, si tenemos un rango de valores para id entonces


escribimos la variable en cuestion, la comparamos, añadimos un and, y
ponemos la segunda comparación.

XQUERY 6
4️⃣ ¿Cuáles son los nombres de los videojuegos que han sido publicados
por “Microsoft Game Studios” con el género “Misc” en el 2010?

let $list := (

for $i in games/game
where $i/publisher = "Microsoft Game Studios" and $i/name/@g
return element consulta {data($i/name)}

) return $list

He creado una lista para practicar pero no lo pide.

for $i in games/game
where $i/publisher = "Microsoft Game Studios" and $i/name/@ge
return $i/name/text()

5️⃣ ¿Cuántos videojuegos tienen distinto valor en el campo “publisher” y


en “developer”

let $list :=(

for $i in games/game
where $i/publisher != $i/developer
return $i/name

) return count ($list)

Para utilizar la función count, debemos hacer una lista, y el return poner
count ($list).

XQUERY 7
Consultas de Examen

1️⃣ El nombre de los videojuegos cuya fecha de lanzamiento esté entre el


2000 y el 2005
(ambos incluidos).

for $i in games/game
where $i/name/@year >= "2000" and $i/name/@year <= "2005"
return $i/name

2️⃣ El nombre de los videojuegos desarrollados por al menos un estudio


(desarrollador) español (sin ninguna etiqueta de apertura/cierre en el
resultado).

for $i in videojuegos/videojuego
where $i/desarrolladores/desarrollador/@pais = "España"
return $i/nombre/text()

3️⃣ El número de juegos de cada género (función fn:count()).

let $generos := distinct-values(//genero)


for $i in $generos
return ($i, fn:count(//videojuego[genero = $i]))

4️⃣ La suma de las horas jugadas de todos los videojuegos (función


fn:sum()).

XQUERY 8
sum(//videojuegos/videojuego/horas_jugadas)

let $total_horas := sum(//videojuegos/videojuego/horas_jugada


return $total_horas

XQUERY 9

También podría gustarte