http://sqlfiddle.com/#!9/74844b/44
我有一個表,每一行都是一個唯一的 ID。我有另一個表,聚合行按每個實體排序,ID 出現在過去。
如何在不使用 COUNT 的情況下獲取該表的行數?我可以使用 JOIN 或其他任何東西。
命令
| 日期 | 用戶身份 |
|---|---|
| 2021-06 | 3333 |
| 2021-09 | 4444 |
AGG
| 日期 | 用戶 | 交易ID |
|---|---|---|
| 2021-06 | 3333 | 1234 |
| 2021-03 | 3333 | XXXX |
| 2021-02 | 3333 | XXXX |
| 2021-09 | 4444 | 1238 |
| 2021-05 | 4444 | XXXX |
| 2021-01 | 4444 | XXXX |
結果
| TXN_ID | 用戶身份 | USERID_count |
|---|---|---|
| 1234 | 33333 | 3 |
| 1238 | 44444 | 3 |
uj5u.com熱心網友回復:
您可以嘗試使用OUTER JOIN聚合函式而不是子查詢。
查詢 1:
select max(s.TXN_ID) TXN_ID,a.UserID, count(*) as USERID_count
from AGG a
LEFT JOIN SDP s ON a.USERID = s.USERID
AND a.DT = s.DT
GROUP BY a.UserID
結果:
| TXN_ID | UserID | USERID_count |
|--------|--------|--------------|
| 1234 | 33333 | 3 |
| 1238 | 44444 | 3 |
uj5u.com熱心網友回復:
您可以像這樣使用 sum
SUM(x>= 0 and y<= 40) AS count_xx
或像這樣的表格行
SELECT TABLE_ROWS from INFORMATION_SCHEMA.TABLESWHERE TABLE_NAME = 'foo'
甚至 found_rows
SELECT SQL_CALC_FOUND_ROWS * FROM fooWHERE bar="value" LIMIT 10;SELECT FOUND_ROWS();
uj5u.com熱心網友回復:
好吧,我認為您已經在 count_rank 列中獲得了該資訊:
select SDP.USERID, max(Count_rank) 1
from SDP left join AGG on AGG.UserID = SDP.USERID
group by SDP.USERID
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/448970.html
