Indicateurs avec une granularité différente dans SQL
P粉824889650
P粉824889650 2024-02-25 21:48:26
0
1
325

Je voudrais dire que j'apprends encore à utiliser SQL, donc les questions que je pose peuvent être faciles pour certains d'entre vous.

Alors, disons que j'ai une colonne appelée SAMPLE et une colonne appelée BATCH. De plus, BATCH contient des SAMPLE et, pour une raison quelconque, il existe une balise liée à la colonne SAMPLE (SAMPLE_FLG).

BATLCH_FLG est utilisé pour montrer qu'au moins un échantillon contenu dans le lot est marqué comme 1.

Vous pouvez visualiser ce scénario dans cet exemple d'image ou dans le tableau ci-dessous :

| sample      | batch | sample_flg | batch_flg |
|:-----------:|:-----:|:----------:|:---------:|
| A111 - 1000 | A11   |      0     |     0     |
| A111 - 200  | A11   |      0     |     0     |
| A111 - 500  | A11   |      0     |     0     |
| B234 - 700  | B234  |      0     |     0     |
| B234 - 50   | B234  |      1     |     1     |
| B234 - 75   | B234  |      0     |     0     |
| C567 - 100  | C567  |      1     |     1     |
| C567 - 700  | C567  |      1     |     0     |
| C567 - 500  | C567  |      0     |     0     |

Comment obtenir un 1 pour chaque lot dans la colonne BATCH_FLG via une requête SQL ? Ce que je veux dire, c'est que je ne devrais pas utiliser 1 plusieurs fois même s'il y a plusieurs échantillons par lot qui sont étiquetés 1 (les trois dernières lignes de l'image d'exemple).

La position du 1 dans la colonne

BATCH_FLG n'a pas d'importance.

J'espère que vous pourrez m'aider. Merci. 🎜
P粉824889650
P粉824889650

répondre à tous(1)
P粉420958692

Vous pouvez utiliser ROW_NUMBER() pour produire les résultats souhaités. Par exemple :

select t.*,
  case when row_number() over(patition by batch order by sample) = 1
       then 1 else 0 end as batch_flg
from t
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal