-1
votes

SQL: compter les dernières valeurs égales

J'ai besoin de résoudre ce problème dans Pure SQL: Je dois compter tous les enregistrements avec une valeur spécifique: Dans ma table, il y a un drapeau de colonne avec des valeurs 0 ou 1. Je dois compter tout le 1 après le dernier 0 et résumer les valeurs de la colonne de la quantité de ces enregistrements.

Exemple: P>

2    | 50


3 commentaires

Y a-t-il une colonne qui définit la commande? Sans cela, cela est impossible car il n'y a pas d'ordre intrinsèque dans des tables (qui sont en réalité des relations, un cas particulier d'ensembles). Et s'il vous plaît étiqueter le SGBD et sa version c'est pour que les solutions puissent varier considérablement parmi eux.


Votre exemple est-il commandé par montant?


Non, ce n'est pas ...


3 Réponses :


1
votes

J'ai supposé que votre exemple est commandé logiquement par montant. Ensuite, vous pouvez le faire: xxx

si la plus grande valeur est d'une ligne où drapeau = 0 , rien ne sera retourné.


1 commentaires

Il n'est pas trié par montant



0
votes

Si votre table peut ne pas contenir aucun em> zéros, vous êtes plus sûr avec: xxx pré>

ou, à l'aide des fonctions de fenêtre: p>

select count(*) as cnt, sum(amount) as amount
from (select t.*, max(case when flag = 0 then amount end) as flag0_amount
      from t
     ) t
where flag0_amount is null or amount > flag0_amount 


1 commentaires

C'était ma première solution mais j'ai besoin de le résoudre avec un maximum d'accès à la table car il est très cher



0
votes

Je trouve la solution par moi-même: xxx


0 commentaires