选择相关表中第一行和最后一行的总和

疯子

在我的表中,我有这三个表:

团队:

Id GUID UNIQUE PRIMARY
Name NVARCHAR

参与者:

Id GUID UNIQUE PRIMARY
FirstName NVARCHAR
[....]
TeamId GUID

参与者资料:

Id GUID UNIQUE PRIMARY
Weight FLOAT
Date DATETIME
ParticipantId GUID
TeamId GUID

我需要的是一个 SQL 查询,它为我提供 Teams 中的所有列,并且:

  • 团队中参与者的 ParticipantData 中第一个(按日期排序)条目的总和 (TeamId)

  • 团队参与者的 ParticipantData 中最后(按日期排序)条目的总和 (TeamId)

解释:

我有很多参与者(团队成员)以某个时间间隔(体重 + 日期)报告他们的体重。我想要完成的是计算所有团队成员的体重减轻。

在 2019-01-03 参与者 1 报告权重 78

在 2019-01-06 参与者 1 报告权重 75

在 2019-01-04 参与者 2 报告权重 86

在 2019-01-07 参与者 2 报告权重 83

我需要查询来获得 SumOfFirstWeights (78 + 86) = 164

我需要查询来获得 SumOfLastWeights (75 + 83) = 158

这让我的体重减轻了 6。

我尝试了很多组合:

Select *, 
(SELECT TOP (1) Sum(Weight) 
 FROM ParticipantData WHERE (TeamId = Teams.Id) 
 GROUP BY ParticipantId
)
ORDER BY Date As SumOfFirstWeights 
From Teams
我为 Bac 工作

您的问题是每组某种最大/最低,而且,您需要这些值的总和。

select t.id, t.name, sum(t1.weight), sum(t2.weight)
from teams t
left join
(
    select pd.teamid, pd.participantid, pd.weight
    from ParticipantData pd
    join 
    (
        select teamid, participantid, min(date) min_date
        from ParticipantData 
        group by teamid, participantid
    ) t on pd.teamid = t.teamid and 
           pd.participantid = t.participantid and
           pd.date = t.min_date
) t1 on t.id = t1.teamid
left join 
(
    select pd.teamid, pd.participantid, pd.weight
    from ParticipantData pd
    join 
    (
        select teamid, participantid, max(date) max_date
        from ParticipantData 
        group by teamid, participantid
    ) t on pd.teamid = t.teamid and 
           pd.participantid = t.participantid and
           pd.date = t.max_date
) t2 on t1.teamid = t2.teamid and
        t1.participantid = t2.participantid
group by t.id, t.name

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何选择与表中项目相关的第一行和最后一行?

选择数据框中的第一行和最后一行?

选择表中的最后一行

如何选择并输出工作表或已过滤列表的第一行和最后一行?

Excel - 从第一行和最后一行中选择另一列中的值

选择聚合中的第一行和最后一行,并在SQL中创建2列

最后一行中的 SQL 组和条件总和

从分组数据中选择第一行和最后一行

MySQL选择除了第一行和最后一行

选择子组的第一行和最后一行

如何根据R中最后一行中的条件过滤第一行和最后一行

插入到MATCH_RECOGNIZE的第一行和最后一行中,选择Oracle

SQL中连续的行之间的差异,包括第一行和最后一行?

使用CSS反增量时如何排除表中的第一行和最后一行

在 SQL Server 2017 中按第一行、最后一行和剩下的 2 个表排序

获取Jasper Reports表中第一行和最后一行的首字母

在R中按组选择从第一行开始并从最后一行结束

使用sqlalchemy从相关表中仅选择一行

我想从 sqlite3 表中删除第一行或最后一行

如何替换Notepad ++中的第一行和最后一行?

从每个组中删除第一行和最后一行

提取熊猫中数据框的第一行和最后一行

在Pandas数据框中查找单个文件的第一行和最后一行

分组中第一行和最后一行之间的差异

如何从cat输出中读取第一行和最后一行?

如何在PHP中跳过文件的第一行和最后一行

计算每组中第一行和最后一行之间的差异

在 Python 中删除数组的第一行和最后一行

SQl:用选择中的最后一行更新表