簡體   English   中英

如何統計Oracle SQL中屬於一個用戶的銀行賬戶數量

[英]How to count the number of bank accounts that belong to one user in Oracle SQL

我有幾個關於 SQL 中使用 GROUP BY 的問題,

您如何計算屬於某個特定用戶的開立銀行賬戶數量? 我試圖寫出最正確的句子,以便 SQL 可以計算每個用戶的所有關聯帳戶,而不是結果有點容易? 它只在所有查詢中顯示 1...

SELECT DISTINCT RPAD(CLI.NOMBRE || '  ' ||CLI.APELLIDOS,30) "Nombre y Apellidos",
                SUM(CUE.SALDO) "Saldo", COUNT(CUE.COD_CUENTA) "Cuentas Abiertas"
from CLIENTE CLI,
     CUENTA CUE
WHERE CLI.COD_CLIENTE = CUE.COD_CLIENTE
GROUP BY CLI.NOMBRE, CLI.APELLIDOS, CUE.SALDO, CUE.COD_CUENTA

就我而言,我嘗試查找具有姓名和姓氏的用戶,並計算用戶打開的帳戶,相反,查詢重復名稱,“計數器”顯示 1 作為結果

[結果][1]; [E/R 圖][2]

提前致謝:!! [1]: https://i.stack.imgur.com/AQDac.png [2]: https://i.stack.imgur.com/jlVte.png

您正在按SALDOCOD_CUENTA進行分組,這會阻止傳統的聚合計數顯示您想要的結果。

However, you can use a window function: you need to tell the COUNT() function about the scope it needs to operate adding OVER(PARTITION BY cli.cod_cliente) .

例如:

select distinct 
  rpad(cli.nombre || '  ' || cli.apellidos, 30) as "nombre y apellidos",
  sum(cue.saldo) as "saldo",
  count(cue.cod_cuenta) over(partition by cli.cod_cliente) as "cuentas abiertas"
from cliente cli
join cuenta cue on cli.cod_cliente = cue.cod_cliente
group by cli.nombre, cli.apellidos, cue.saldo, cue.cod_cuenta

注意:請使用現代連接語法,而不是 80 年代的連接。 我更新了你的查詢。

暫無
暫無

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

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