SQLで同じようなクエリがある場合の冗長性の排除(WITHを使わない方法)


SQL文について質問があります。  
以下のようなテーブルがあったとします。  
[![画像の説明をここに入力](https://i.stack.imgur.com/PZ8Ey.png)](https://i.stack.imgur.com/PZ8Ey.png)  
[![画像の説明をここに入力](https://i.stack.imgur.com/OR9Km.png)](https://i.stack.imgur.com/OR9Km.png)  
これに対して塗料だけの在庫データを出して、カラーコード毎の総重量を付け加えたいです。  
イメージは以下のような結果です。  
[![画像の説明をここに入力](https://i.stack.imgur.com/uxcPp.png)](https://i.stack.imgur.com/uxcPp.png)

そのために以下のようなクエリを書きました。

[code]

    SELECT
        X.*,
        Y.総重量
    FROM
        (
            SELECT
                カラーコード,
                重量
            FROM
                在庫
                INNER JOIN
                    アイテムマスタ
                ON  在庫.アイテムコード = アイテムマスタ.アイテムコード
            WHERE
                アイテムマスタ.分類 = '塗料'
        ) X
        LEFT JOIN
            (
                SELECT
                    カラーコード,
                    SUM(重量) as 総重量
                FROM
                    在庫
                    INNER JOIN
                        アイテムマスタ
                    ON  在庫.アイテムコード = アイテムマスタ.アイテムコード
                WHERE
                    アイテムマスタ.分類 = '塗料'
                GROUP BY
                    在庫.カラーコード
            ) Y
        ON  X.カラーコード = Y.カラーコード
    
[/code]

カラーコード毎の総重量を求めるために同じようなサブクエリを同士LEFT JOINしています。  
この同じようなクエリをすっきりさせて求める結果を出す方法はないでしょうか。

[code]

    SELECT
        X.*,
        SELECT SUM(重量) ～～
    
[/code]

みたいな感じで同じようなサブクエリをJOINせずにできないかと思って色々試しましたがうまくいきませんでした。  
このやり方でしか出せないでしょうか。  
またWITH区は使わない方法でお願いします。  
このSQLは実際には実行していないのでエラーが出るかもしれないことをご了承ください。




MySQL 8.0.20 での場合ですが、「カラーコード」と「重量」でグルーピングを行って、総重量は Window 関数で求めます。

[code]

    SELECT
      `カラーコード`,
      `重量`,
      ROUND(
        SUM(SUM(`重量`))
        OVER (PARTITION BY `カラーコード`), 1) AS `カラーコード毎の総重量`
    FROM 
      `在庫`
    WHERE
      `アイテムコード` IN
        (SELECT `アイテムコード` FROM `アイテムマスタ` WHERE `分類` = '塗料')
    GROUP BY `カラーコード`, `重量`;
    
    
    +--------------------+--------+-----------------------------------+
    | カラーコード         | 重量    | カラーコード毎の総重量               |
    +--------------------+--------+-----------------------------------+
    |                100 |    1.2 |                               4.7 |
    |                100 |    3.5 |                               4.7 |
    |                300 |    1.8 |                               1.8 |
    +--------------------+--------+-----------------------------------+
    
[/code]

