SQL - 在不使用 COUNT() 的情况下计算一个 ID 在另一个 table 中的次数

SQL - Count number of times an ID is in another table without using COUNT()

http://sqlfiddle.com/#!9/74844b/44

我有一个 table,每一行都是一个唯一的 ID。我有另一个 table,其中包含按 ID 过去出现的每个实例排序的聚合行。

如何在不使用 COUNT 的情况下计算 table 的行数?我可以使用 JOIN 或其他任何东西。

订单

Date USERID
2021-06 3333
2021-09 4444

聚合

Date User TransactID
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 USERID_count
1234 33333 3
1238 44444 3

你可以像这样使用 sum

SUM(x>= 0 and y<= 40) AS count_xx

或 table 行像这样

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();

您可以尝试使用 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

Results:

| TXN_ID | UserID | USERID_count |
|--------|--------|--------------|
|   1234 |  33333 |            3 |
|   1238 |  44444 |            3 |

好吧,我认为您已经在 count_rank 列中获得了该信息:

select SDP.USERID, max(Count_rank)+1
from SDP left join AGG on AGG.UserID = SDP.USERID
group by SDP.USERID

DEMO