开发者社区> 问答> 正文

如何在SQL Server添加一个列的值,但只有在艺术家是相同的?

如何在SQL Server添加一个列的值,但只有在艺术家是相同的?

展开
收起
贺贺_ 2019-12-02 23:25:08 299 0
1 条回答
写回答
取消 提交回答
  • 有许多方法可以实现它。 一种是在子查询中求和,并将其用作查询中的筛选器。

    select art.[Name], gba.[ListenedSum]
    from [dbo].[artists] art
    join
    (
        select sg.[Artist], sum(sg.[ListenedCount]) as [ListenedSum]
        from [dbo].[songs] sg
        group by sg.[Artist]
    ) as gba on gba.[Artist] = art.[ID_Artist]
    where gba.[ListenedSum] > 1000000
    
    

    更直接的方法是使用

    select art.[Name], sum(sg.[ListenedCount]) as [ListenedSum]
    from [dbo].[artists] art
    join [dbo].[songs] sg on sg.[Artist] = art.[ID_Artist]
    group by art.[Name]
    having sum(sg.[ListenedCount]) > 1000000
    
    

    有趣的是,引擎可以以不同的方式结束运行这两个查询(不能保证),并且它们可能会以不同的性能结束。 还有另一个有趣的方法,比如使用CTE,但我认为它有点复杂。

    2019-12-02 23:25:38
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载