![](/img/trans.png)
[英]Finding out how many users have the same phone number, and how many numbers belong to one user in 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
您正在按SALDO
和COD_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.