mysql—如何计算b表中有2条以上记录的表中的所有记录

9avjhtql  于 2021-06-20  发布在  Mysql
关注(0)|答案(5)|浏览(284)

嗨,我正在统计所有订购超过2台的用户。
到目前为止我所做的是

SELECT Count(*), 
   (SELECT Count(*) AS cnt 
    FROM   order ord 
    WHERE  usr.id = ord.user_id 
    HAVING cnt > 1) 
FROM   USER usr;

但我还是有很多用户

3qpi33ja

3qpi33ja1#

试试这个:

SELECT Count(*) FROM   USER usr
WHERE EXISTS(SELECT 1 FROM order
             WHERE user_id = usr.id
             GROUP BY user_id
             HAVING COUNT(*) >= 2)
niwlg2el

niwlg2el2#

你可以这样写:

Select count(*)
from (
Select UserId, Count(UserId) from Order group by UserId having Count(UserId)>2
) Temp
lymgl2op

lymgl2op3#

将查询分为两部分:
所有下了2个以上订单的用户:

SELECT user_id, COUNT(*) AS count FROM orders  
GROUP BY user_id  
HAVING COUNT(*) > 2;

从以上结果中统计所有用户:

SELECT COUNT(*) AS total FROM (
    SELECT user_id FROM orders  
    GROUP BY user_id  
    HAVING COUNT(*) > 2
) required_users;
0wi1tuuw

0wi1tuuw4#

尝试此操作以获取用户明智的订单计数

SELECT usr.id, Count(ord.id)
FROM USER usr
INNER JOIN order ord ON usr.id = ord.user_id 
GROUP BY usr.id
Having Count(ord.id)>2

如果你想计算下超过2个订单的用户数量

SELECT count(distinct usr.id)
FROM USER usr
INNER JOIN order ord ON usr.id = ord.user_id 
GROUP BY usr.id
Having Count(ord.id)>2
kqlmhetl

kqlmhetl5#

我只是试图修复你的查询,因为我发现你在投影上犯了错误,这就是为什么我使用子查询

SELECT * from 
   (    
    SELECT usr.id, Count(*) AS cnt 
    FROM   order ord 
    inner join USER usr
    on usr.id = ord.user_id
    group by usr.id   
    HAVING cnt >2
) as T

相关问题