我是SQL的新手,我正在尝试用DBeaver创建一些查询。我有一些关于使用group by聚合的问题。我将使用一个示例输出表来解释(这是运行我的查询的输出):
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,然后根据group by subtype,我可以从示例1中检索不同的信息(根据子类型,由于某些数据只能用于A或B,表中显示的一些数据将为Null )。
现在对我来说第一个困难是:我想为部分B创建一个新的列"Data 5“,公式将使用来自数据1列的20,来自数据2列的15和来自数据3列的21 -即20/(21-15)。可以根据输出结果生成新的输出吗?希望我没有把你搞糊涂。
对我来说第二个困难:最初,我想为示例1创建一个单行表,所以基本上,我不想按子类型分组,只显示数据1-数据4列。但是,我的查询有case和end as语句,它们搜索子类型列中的关键字来检索信息。因此,它迫使我使用group by子类型(我猜是??)。该怎么办呢。有没有办法让这件事变得简单?我想做这样的东西:
ID Data 1 Data 2 Data 3 Data 4
Sample 1 20 15 21 22如果我的问题令人困惑,我可以在这里粘贴我的实际查询并输出结果,这样你们就可以更好地理解。
感谢您的帮助!

发布于 2020-09-08 17:03:25
首先,在单独的CTE中计算completion_type = 'FRAC'和completion_type = 'JETPERF'的汇总。然后按如下方式组合它们:
;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发布于 2020-09-07 11:48:10
你可以试试下面的-
select id, max(data1) as data1,max(data2) as data2,max(data3) as data3,max(data4) as data4
from tablename
group by id发布于 2020-09-07 14:08:55
尝试此查询:
select id, max(data1) as data1,max(data2) as data2,max(data3) as data3,max(data4) as data4
from tablename group by SubTypehttps://stackoverflow.com/questions/63771018
复制相似问题