簡體   English   中英

如何將不同表中的兩列相加 MySQL

[英]how to sum two columns from different tables MySQL

我需要對位於不同表中並按 session_id 分組的兩個不同列的數據求和.....

第一張桌子

第二張桌子

我需要對按 session_id 分組的 used_points + price_points 列求和

這是我希望得到的結果

這是我希望得到的結果

我已經嘗試過這個查詢,但我只設法對數據進行了分組,但我無法通過 session_id 對其進行總結

SELECT session_details.session_id,SUM(session_details.spent_points) AS total_sum_session FROM session_details WHERE session_details.session_id IN ("-Meagevy6y9ukbmFXvB7","-Meak6dG9iqvHWfAGQvy") GROUP BY session_details.session_id UNION SELECT template_sales.session_id, SUM(template_sales.price_points) AS total_sum_sales FROM template_sales WHERE template_sales.session_id IN ("-Meagevy6y9ukbmFXvB7","-Meak6dG9iqvHWfAGQvy") GROUP BY template_sales.session_id 

首先使用UNION ALL從您想要的 2 個表中獲取所有行,然后聚合:

SELECT session_id, SUM(points) AS total_points
FROM (
  SELECT session_id, spent_points AS points
  FROM session_details 
  WHERE session_id IN ("-Meagevy6y9ukbmFXvB7","-Meak6dG9iqvHWfAGQvy") 
  UNION ALL
  SELECT session_id, price_points
  FROM template_sales 
  WHERE session_id IN ("-Meagevy6y9ukbmFXvB7","-Meak6dG9iqvHWfAGQvy") 
) t
GROUP BY session_id

您快到了:

WITH union_rows (session_id, points) AS (
        SELECT session_details.session_id, session_details.spent_points
          FROM session_details
         WHERE session_details.session_id IN ('-Meagevy6y9ukbmFXvB7','-Meak6dG9iqvHWfAGQvy')
         UNION ALL
        SELECT template_sales.session_id, template_sales.price_points
          FROM template_sales
         WHERE template_sales.session_id IN ('-Meagevy6y9ukbmFXvB7','-Meak6dG9iqvHWfAGQvy')
     )
SELECT session_id
     , SUM(points) AS total_sum
  FROM union_rows
 GROUP BY session_id
;

如果您有舊版本的 MySQL,沒有WITH clause支持,請改用派生表。

session_id 過濾器可以在 CTE 術語之外完成,但是您也可以攜帶所有其他行,直到過濾器被處理。

也許您可以使用 session_id 在這兩個表之間進行 JOIN。 之后,您可以對這兩個屬性求和。

它會是這樣的:

SELECT session_details.session_id,SUM(SD.SPENT_POINTS + TSS.PRICE_POINTS ) AS total_sum_session 
FROM session_details SD
JOIN template_sales.session_id TSS ON SD.SESSION_ID = TSS.SESSION_ID
WHERE SD.session_id IN ("-Meagevy6y9ukbmFXvB7","-Meak6dG9iqvHWfAGQvy") 
GROUP BY SD.session_id 

試試這個:

SELECT A.session_id,SUM(A.Total) AS Total
FROM 
(
  SELECT session_details.session_id,session_details.spent_points AS Total
  FROM session_details 
  WHERE session_details.session_id IN ("-Meagevy6y9ukbmFXvB7","- 
  Meak6dG9iqvHWfAGQvy") 

  UNION ALL

  SELECT template_sales.session_id, template_sales.price_points AS Total
  FROM template_sales 
  WHERE template_sales.session_id 
  IN ("-Meagevy6y9ukbmFXvB7","-Meak6dG9iqvHWfAGQvy") 
) AS A
GROUP BY A.session_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM