SQL分组依据和计算

金太阳

我是SQL新手,正在尝试在DBeaver中创建一些查询。我对使用分组依据进行汇总有一些疑问。我将使用示例输出表来解释(通过运行查询,这就是输出):

ID SubType Data 1 Data 2 Data 3 Data 4
Sample 1 A Null Null 21 22
Sample 1 B 20 15 Null Null

因此,在这里,我使用了where语句来选择样本1,然后基于分组子类型,我可以从样本1中检索不同的信息(基于子类型,某些数据将为Null,如表中所示,由于某些原因数据仅适用于A或B)。

现在是我遇到的第一个难题:我想为B部分创建一个新列“数据5”,该公式将使用数据1列中的20,数据2列中的15和数据3列中的21-即20 /(21- 15)。是否有可能根据输出结果做出新的输出?希望我不要在这里使您感到困惑。

我遇到的第二个困难:最初,我想为Sample 1创建一个单行表。因此,基本上,我不想按子类型分组,而只显示Data 1-Data 4列。但是,我的查询具有case和end作为语句,该语句在Subtype列中搜索关键字以检索信息。因此,它迫使我使用子类型分组(我猜??)。我不知道该怎么办。有没有办法使这个简单?我想做这样的事情:

ID Data 1 Data 2 Data 3 Data 4
Sample 1 20 15 21 22

如果我的问题令人困惑,我可以在此处粘贴我的实际查询并输出结果,以便大家更好地理解。

感谢您的帮助!!!!

在此处输入图片说明

cddt

首先计算简单总结completion_type = 'FRAC'completion_type = 'JETPERF'在不同的CTE。然后将它们组合如下:

;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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章