在多连接雪花查询中包含 SUM

Including a SUM in a multiple joined snowflake query

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

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

您应该在 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

您将需要做一个子select 来获取此信息。更像是这样的:

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;