sqlzoo 9-.Respuestas de funciones de ventana

Si tiene alguna pregunta, por favor comente o chatee en privado. Charle con el bloguero en privado, gracias.

Enlace al título original: https://sqlzoo.net/wiki/Window_functions

Otros enlaces de solución de preguntas: https://blog.csdn.net/aiqiyizz/article/details/109057732

La solución corresponde a la versión en inglés.

Esta sección debe tratar sobre algunas funciones de uso común

9- Función ventana

9-.1 Calentamiento

SELECT lastName, party, votes
  FROM ge
 WHERE constituency = 'S14000024' AND yr = 2017
ORDER BY votes DESC

9-.2 ¿Quién ganó?

SELECT party, votes,
       RANK() OVER (ORDER BY votes DESC) as posn
  FROM ge
 WHERE constituency = 'S14000024' AND yr = 2017
ORDER BY party

9-.3

SELECT yr,party, votes,
      RANK() OVER (PARTITION BY yr ORDER BY votes DESC) as posn
  FROM ge
 WHERE constituency = 'S14000021'
ORDER BY party,yr

9-.4

Formato de salida:constituency, party, votes, rank

No es difícil saber qué generar

SELECT constituency,party, votes, RANK() OVER (PARTITION BY constituency ORDER BY votes DESC) AS rank
  FROM ge
 WHERE constituency BETWEEN 'S14000021' AND 'S14000026'
   AND yr  = 2017
 ORDER BY rank, constituency

9-.5 Solo ganadores

La pregunta anterior y la aplicación de SELECT IN SELECT

SELECT constituency, party
FROM (
  SELECT constituency,party, votes, RANK() OVER (PARTITION BY constituency ORDER BY votes DESC) AS rank
    FROM ge
  WHERE constituency BETWEEN 'S14000021' AND 'S14000026'
    AND yr  = 2017
  ORDER BY rank, constituency
) temp1
WHERE rank = 1

9-.6 asientos escoceses

¿La pregunta parece un poco argot? Difícil de entender el significado de la pregunta. Solo entiendo los datos después de leerlos.

cuántos escaños para cada partido en Escocia ⇒ \ Rightarrow Ganador del significado del título anterior

Ocupar un asiento corresponde al ganador, perdona mi mala comprensión.

SELECT party, COUNT(*) AS winner
FROM (
  SELECT constituency,party, votes, RANK() OVER (PARTITION BY constituency ORDER BY votes DESC) AS rank
    FROM ge
  WHERE constituency LIKE 'S%'
    AND yr  = 2017
  ORDER BY rank, constituency
) temp1
WHERE rank = 1
GROUP BY party

Supongo que te gusta

Origin blog.csdn.net/aiqiyizz/article/details/109096955
Recomendado
Clasificación