【问题标题】:Including a SUM in a multiple joined snowflake query [duplicate]在多个连接的雪花查询中包含 SUM [重复]
【发布时间】:2020-03-17 15:31:58
【问题描述】:

我正在努力在雪花模式中创建语句。我需要显示所有产品和相关曲目的列表,但还要包括每个曲目附有多少词曲作者的计数。 我的桌子是:

Table: PRODUCT
-PRODUCT_ID
-ALBUM_ARTIST
-ALBUM_TITLE

Table: SONGWRITER
-SONGWRITER_ID
-FIRSTNAME
-LASTNAME

Table: SONG_SONGWRITER
-SONGWRITER_ID
-TRACK_ID
-OWNERSHIP_SHARE

Table: TRACK 
-TRACK_ID
-PRODUCT_ID
-TRACK_ARTIST
|TRACK_NAME

我尝试了以下方法,但是由于 group by 子句而出错。有人有什么建议吗?

SELECT prod.*, tra.TRACK_NAME,count(*) AS "Number of Songwriters"
FROM PRODUCT prod
INNER JOIN TRACK tra
ON tra.PRODUCT_ID=prod.PRODUCT_ID
INNER JOIN SONG_SONGWRITER ssw
ON ssw.TRACK_ID = tra.TRACK_ID
GROUP BY prod.PRODUCT_ID

【问题讨论】:

    标签: sql sql-server snowflake-cloud-data-platform snowflake-schema


    【解决方案1】:

    您将需要进行子选择以获取此信息。更像是这样的:

    SELECT prod.*, tra.TRACK_NAME, ssw.songwriters_count as "Number of Songwriters"
    FROM PRODUCT prod
    INNER JOIN TRACK tra
       ON tra.PRODUCT_ID=prod.PRODUCT_ID
    INNER JOIN (
         SELECT TRACK_ID, COUNT(*) as songwriters_count
         FROM SONG_SONGWRITER
         GROUP BY TRACK_ID
      ) ssw
      ON ssw.TRACK_ID = tra.TRACK_ID;
    

    【讨论】:

    • 谢谢你!我为此绞尽脑汁很久了!
    【解决方案2】:

    您应该在 GROUP BY 子句中提及您在 SELECT 子句中提到的列:

    SELECT prod.*, tra.TRACK_NAME,count(*) AS "Number of Songwriters"
    FROM PRODUCT prod
    INNER JOIN TRACK tra
    ON tra.PRODUCT_ID=prod.PRODUCT_ID
    INNER JOIN SONG_SONGWRITER ssw
    ON ssw.TRACK_ID = tra.TRACK_ID
    GROUP BY prod.PRODUCT_ID,prod.ALBUM_ARTIST,prod.ALBUM_TITLE
    ,tra.TRACK_NAME
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-18
      • 2020-11-05
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多