簡體   English   中英

SQL 保持運行計數,在內部加入之后

[英]SQL Keep running count, after inner Join

我正在使用本地 mysql 服務器,並且有兩個表。

表一:

ID | Name 
1    Joe
2    Bob
3    John

表 B:

ID |    DATE    |  Name_ID | Point
1    2010-01-01       1       1
2    2011-01-01       1       1
3    2013-01-01       1      -1
4    2010-01-01       2      -1
5    2012-01-01       2      -1
6    2013-01-01       2      -1
7    2014-01-01       2       1

對於表 A 中的每個 ID,我正在嘗試獲取

  1. 最大日期和
  2. 他們的積分的運行計數。 (日期和點在表 B 中)。

想要的結果:

Name | Latest_Date | Point_total
John      NULL         NULL
Joe     2013-01-01      1
Bob     2014-01-01     -2

到目前為止,我有這個查詢:

SELECT DISTINCT a.Name, b.Date, SUM(b.point) OVER (PARTITION BY b.Name_ID) Point_total FROM 
TableA a 
LEFT OUTER JOIN TableB b 
ON a.ID = b.Name_ID 
INNER JOIN  (
SELECT b.Name_ID, MAX(b.Date) Latest_Date 
FROM TableB b GROUP BY b.Name_ID ) m 
ON (m.Latest_Date = b.Date or (b.Date is NULL)) AND 
(b.Name_ID = m.Name_ID OR (b.Name_ID is NULL)) 
ORDER BY Name_ID;

結果表確實輸出了正確的最大日期,但運行總計只考慮了具有最大日期的條目的點。

我在這里缺少什么?

這看起來像聚合:

SELECT a.Name, MAX(b.Date), SUM(b.point) as Point_total
FROM TableA a LEFT OUTER JOIN
     TableB b 
     ON a.ID = b.Name_ID 
GROUP BY a.name

這是一個聚合查詢:

select a.name, max(b.date) latest_date, sum(b.point) point_total
from a
left join b on b.name_id = a.id
group by a.id, a.name
SELECT A.Name, MAX(B.Date) as Max_Date, SUM(b.point) as Total_Points
FROM TableA as A
    LEFT JOIN TableB as B 
    ON A.ID = B.Name_ID 
GROUP BY A.name

暫無
暫無

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

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