簡體   English   中英

如何返回特定用戶 ID 對應的列之和大於 1M 的記錄?

[英]How do I return records where the sum of a column that corresponds to a specific user ID is greater than 1M?

我的情況如下 -

我的數據庫表中有這些記錄(表名:MyTable):

ID                                      ACCOUNT_NUM     DATE        BALANCE
------------------------------------    -----------     ----------  -----------
111                                     1               2020-12-17  500000.0000
111                                     2               2020-12-17  500000.0000
222                                     1               2020-12-17  500000.0000
222                                     2               2020-12-17  400000.0000
333                                     1               2020-12-17  800000.0000
333                                     2               2020-12-17  300000.0000
444                                     1               2020-12-17  1000000.0000
444                                     2               2020-12-17  100.0000

每個 ID 代表一個成員,每個成員有 2 個帳戶。

通過為每個 ID 添加帳戶 1 和 2,我只需要返回總余額超過 1000000.00 (1M) 的記錄。

到目前為止,我已經嘗試過:

SELECT ID, ACCOUNT_NUM, DATE, BALANCE FROM MyTable
GROUP BY ID, ACCOUNT_NUM, DATE, BALANCE 
HAVING SUM(BALANCE) >= '1000000.00';

但它只返回 ID 444 的單個記錄,其中帳戶 1 余額 = 1M。

如何獲取每個成員對 SUM 帳戶 1 和 2 的查詢並在超過 1M 時返回?

SQL 的新功能。 如果我需要添加更多信息,請告訴我。

提前致謝

使用 window 函數:

SELECT ID, ACCOUNT_NUM, DATE, BALANCE
FROM (SELECT t.*,
             SUM(BALANCE) OVER (PARTITION BY ID, ACCOUNT_NUM, DATE) as SUM_BALANCE
      FROM MyTable t
     ) t
WHERE SUM_BALANCE >= 1000000.00;

您的問題表明您只想按account_num求和,但您當前的邏輯包括其他列。 我基本上已經包含了您當前的邏輯-盡管包含BALANCE沒有意義,因為這就是您要添加的內容。

使用子查詢來應用必要的條件。 在此示例中,當評估表中的每一行(別名為“t1”)時,它將檢查表中所有記錄的總和(別名為“t2”,通過子查詢)具有相同的“標識”值

SELECT ID, ACCOUNT_NUM, DATE, BALANCE FROM MyTable t1
WHERE
(
    SELECT SUM(BALANCE) FROM MyTable t2
    WHERE t2.ID = t1.ID
) > 1000000.00

暫無
暫無

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

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