亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

匯總兩個獨立表的銷售資料時遇到 MySQL 問題
P粉391677921
P粉391677921 2024-04-04 14:22:13
0
2
703

預先非常感謝您的支持。 我正在學習 SQL 並產(chǎn)生一些資料來玩,但我堅持做一件簡單的事情。下面螢幕截圖中的表格顯示了我的 sales20 表的一部分,該表顯示了每位員工在 2020 年實現(xiàn)的銷售額以及區(qū)域和日期資訊。

表格銷量20

我有 2021 年的同一張桌子。我想做的是;我想提供員工姓名、地區(qū)、員工在 2020 年和 2021 年實現(xiàn)的總銷售額。我編寫了以下查詢,但它沒有提供正確的數(shù)字。它帶來了比應有的更高的東西。 重要的一點是,2020年和2021年的員工不一樣。例如,2021 年有一名新員工,這意味著他也應該被列出,但該員工的 2020 年列應該為空。

我的查詢:

SELECT sales20.staff, 
       sales20.region,
       SUM(sales20.amount) AS Total_20,
       SUM(sales21.amount) AS Total_21
  FROM sales20
  JOIN sales21 ON sales20.staff = sales21.staff
 GROUP BY staff, region

結(jié)果的部分截圖:

結(jié)果:

你能告訴我我做錯了什麼嗎?

P粉391677921
P粉391677921

全部回覆(2)
P粉476475551

當您需要合併兩個表時,您正在連接它們 -

SELECT staff, 
       region,
       SUM(IF(YEAR(saledate) = '2020',amount,0) AS Total_20,
       SUM(IF(YEAR(saledate) = '2021',amount,0) AS Total_21,
  FROM (SELECT staff, region, amount, saledate
          FROM sales20
         UNION ALL
        SELECT staff, region, amount, saledate
          FROM sales21)
 GROUP BY staff, region;
P粉138871485
SELECT sales20.staff,
       sales20.region,
       SUM(sales20.amount) AS Total_20,
       SUM(sales21.amount) AS Total_21
FROM sales20
  JOIN sales21
    ON sales20.staff = sales21.staff
   AND sales20.region = sales21.region
GROUP BY staff,
         region

您需要根據(jù)人員和區(qū)域來連接 2 個表,以進行一對一連接。如果您僅基於員工加入,那麼它會進行一對多加入,因此您將得到損壞的輸出。

另一種方法是合併兩個表中的數(shù)據(jù),然後在此基礎(chǔ)上執(zhí)行聚合。這應該會為您提供準確的結(jié)果。

WITH combined_data AS
(
  SELECT staff,
         region,
         saledate,
         amount
  FROM sales20
  UNION ALL
  SELECT staff,
         region,
         saledate,
         amount
  FROM sales21
)
SELECT staff,
       region,
       SUM(CASE WHEN year(saledate) = 2020 THEN amount ELSE 0 END) AS Total_20,
       SUM(CASE WHEN year(saledate) = 2021 THEN amount ELSE 0 END) AS Total_21
FROM combined_data
GROUP BY staff,
         region
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板