[英]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.