Je suis nouveau à SQL et j'essaie de créer des questions sur DBeaver. J'ai quelques questions concernant l'agrégation en utilisant le groupe par. J'utiliserai un exemple de table de sortie à expliquer (c'est la sortie en exécutant ma requête): donc ici, j'ai utilisé l'instruction pour sélectionner Sample 1, puis en fonction du groupe par Sous-type, je peux récupérer différentes informations à partir de l'échantillon 1 (sur la base du sous-type, certaines données seront nuls comme indiqué dans la table en raison de la raison pour laquelle certaines données sont uniquement disponibles pour A ou B). P> maintenant La première difficulté pour moi: je veux créer une nouvelle colonne "Données 5" pour la partie B et la formule utilisera 20 à partir de la colonne Data 1, 15 Données 2 Colonne et 21 de la colonne Data 3 - Ie 20 / (21-15 ). Est-ce possible pour effectuer une nouvelle sortie en fonction des résultats de la sortie? J'espère que je ne vous confonds pas ici. P> Deuxième difficulté pour moi: Initialement, je veux faire une table d'une rangée pour l'échantillon 1. Donc, fondamentalement, je ne veux pas grouper par sous-type et juste montrer Data 1 - Data 4 colonnes. Toutefois, ma requête a une affaire et la fin en tant que déclarations qui recherchent des mots-clés dans la colonne de sous-type pour récupérer des informations. Par conséquent, cela me force à utiliser le groupe par sous-type (je suppose ??). Je ne sais pas quoi faire. Y a-t-il un moyen de rendre cela simple? Je veux faire quelque chose comme ceci: p> Si mes questions sont déroutantes, je peux coller ma requête réelle ici et les résultats de sortie afin que vous puissiez mieux comprendre. P > merci pour votre aide !!!! p>
3 Réponses :
Vous pouvez essayer le ci-dessous -
select id, max(data1) as data1,max(data2) as data2,max(data3) as data3,max(data4) as data4 from tablename group by id
Merci. S'il vous plaît aussi voir ma requête ci-jointe!
Essayez cette requête:
select id, max(data1) as data1,max(data2) as data2,max(data3) as data3,max(data4) as data4 from tablename group by SubType
Merci. S'il vous plaît aussi voir ma requête ci-jointe!
Calculez d'abord les résumés de terminal_type = 'frac' code> et pour terminal_type = 'jetperf' code> dans des CTES séparées. Ensuite, combinez-les comme suit: ;WITH frac as (
SELECT
c.uwi,
AVG(c.base_depth - c.top_depth) AS Avg_stage_Spacing,
COUNT(c.completion_type) AS Stage_Count
FROM
well_completion AS c
WHERE
c.completion_type = 'FRAC'
GROUP BY
c.uwi
),
jetperf as (
SELECT
c.uwi,
COUNT(c.completion_type) AS Perf_Count
FROM
well_completion AS c
WHERE
c.completion_type = 'JETPERF'
GROUP BY
c.uwi
)
SELECT
f.uwi,
f.Avg_stage_Spacing / (j.Perf_count / f.Stage_Count) AS Avg_cluster_spacing
FROM
frac as f
INNER JOIN
jetperf as j
ON
f.uwi = j.uwi
@Goldensun Si j'ai répondu à votre question, veuillez l'accepter comme la bonne réponse. Si cela ne répond pas à votre question, veuillez fournir plus d'informations.
J'ai accepté votre réponse comme la bonne réponse. Y a-t-il autre chose que je dois faire? S'il-te-plaît apprend-moi.
@Goldensun Bienvenue à Stackoverflow. Je vous suggère de prendre le Stackoverflow Tour . Après cela, vous pouvez lire des pages utiles dans le centre d'aide , telle que Comment puis-je poser une bonne question?
Serait utile de voir vos requêtes
S'il vous plaît poster vos données d'échantillonnage. Je soupçonne que vous recherchez des CTES (expressions de table communes).
@OldProgrammer La requête est attachée comme une image
@CDDT La requête est attachée comme une image
Comme vous pouvez le voir, je veux corriger la syntaxe pour avg_cluster_spacing, ce qui ne va pas ici (cela ne me permet pas d'écrire la syntaxe correcte). Selon la sortie, avg_cluster_spacing doit être égal à 251,82 / (63/10) = 39,97. C'est la valeur que je veux au lieu de 25.182. La formule pour avg_cluster_scaçage doit être avg_stage_scaçage / (perf_count / stay_count). Cependant, je ne sais pas comment écrire la syntaxe puisque SQL dira qu'ils n'existent pas. Je ne peux pas tout fusionner en une rangée en raison de la croissance limitée par achèvement_type.
Je suppose que c'est assez difficile ici car SQL prend des données de 2 types d'achèvement différents pour le même UWI pour calculer mes valeurs souhaitées (ai-je besoin d'une instruction SELECT ou de quelque chose imbriqué?). En bref, j'ai besoin d'une syntaxe pour effectuer ce qui suit: une fois terminé_type = "frac", calculez A et B; lorsque terminé_type = "jetperf", calculez C; Calculez ensuite A / (C / B) et enregistrer sous AVG_CLUSTER_SPACING comme nouvelle colonne.
S'il vous plaît voir ma réponse pour un exemple avec CTES. PS Dans l'avenir, veuillez coller votre code comme texte, pas comme une image.