Résultats incorrects lors de l'utilisation de last_value()
P粉486743671
P粉486743671 2024-03-31 11:23:07
0
1
437

Voici le formulaire :

id Région Variété Prix
1 Vallée Alexandre Cabernet Sauvignon 35
2 Vallée Alexandre Cabernet Sauvignon 45
3 Vallée Alexandre Merlot 19
4 Californie Sauvignon Blanc 8
5 Californie Pinot Noir 17

Je souhaite connaître les variétés les moins chères et les plus chères dans chaque région, le résultat devrait donc être :

Région Cher Pas cher
Vallée Alexandre Cabernet Sauvignon Merlot
Californie Pinot Noir Sauvignon Blanc

J'ai pu obtenir les bons résultats en utilisant les deux first_value()

SELECT
  DISTINCT region,
  FIRST_VALUE(variety) OVER (PARTITION BY region ORDER BY price DESC) AS expensive,
  FIRST_VALUE(variety) OVER (PARTITION BY region ORDER BY price) AS cheapest
FROM wine_list

Je pense que cela équivaut à la requête suivante

SELECT
  DISTINCT region,
  FIRST_VALUE(variety) OVER (PARTITION BY region ORDER BY price DESC) AS expensive,
  LAST_VALUE(variety) OVER (PARTITION BY region ORDER BY price DESC) AS cheapest
FROM wine_list

Mais maintenant, mon résultat est :

Région Cher Pas cher
Vallée Alexandre Cabernet Sauvignon Cabernet Sauvignon
Vallée Alexandre Cabernet Sauvignon Merlot
Californie Pinot Noir Pinot Noir
Californie Pinot Noir Sauvignon Blanc

Pourquoi ma sortie est-elle fausse ? Je suis confus.

P粉486743671
P粉486743671

répondre à tous(1)
P粉253800312

FIRST_VALUELAST_VALUE 的默认窗口是 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW. c'est à dire. C'est la première réponse. La dernière valeur est "jusqu'à présent".

Cependant, vous souhaitez que cela s'applique à l'ensemble de données, vous devez donc décrire explicitement la plage de fenêtres :

SELECT DISTINCT
  region,
  FIRST_VALUE(variety) OVER 
    (PARTITION BY region ORDER BY price DESC
     ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS expensive,
  LAST_VALUE(variety) OVER 
     (PARTITION BY region ORDER BY price DESC
      ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS cheapest
FROM wine_list;
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal