zhixin 的个人资料MYspace.com照片日志列表 工具 帮助
7月28日

sql 重复项计数查询

有一个报名表【SpecialEngage_UserSignInfo】。表结构:idx   username, truename.. (username 为报名的卖家名称)
有一个订单记录表【sale_orderlist 】。 表结构: idx username,  ptaccount... (username为卖家名称,ptaccount 为买家帐号)
 
要查询所有报名的人在订单记录表中不重复交易的买家帐号的数量。
 
知道要用group by,不过一下子到没写出来。于是google,网上到有不少类似的问题。
最后这样搞定:
select username, count(*)as [TotalBuyerCount]
from (SELECT DISTINCT ol.ptaccount,usi.username FROM SpecialEngage_UserSignInfo usi,sale_orderlist ol where usi.username=ol.username) tb
group by username
 
解释一下:
内部子查询是获得不重复的订单记录条数
而后在外部按卖家名字分组,再使用count聚合获得每组的数量。
最终返回的是username,不重复买家帐号的数量。
--------------------------------------
username            TotalBuyerCount    
chenlineng20052          8                  
chenlineng2041            1                  
fhgamezonetest           15
--------------------------------------
 
 
以下为网咯上的部分资料:
一:不重复记录统计数量的方法
方法1:SELECT COUNT(*) AS BrandCount FROM (SELECT DISTINCT BrandID FROM Dealer_Product WHERE Status>=100 AND DealerID=10129) TB

方法2: SELECT COUNT (DISTINCT BrandID) FROM Dealer_Product  WHERE Status>=100 AND DealerID=5105

整合以上SQL的格式大致如下:

方法1:SELECT COUNT(*)   FROM  (SELECT DISTINCT ColName FROM Table1)  tb

方法2:SELECT COUNT(DISTINCT   ColName)   FROM   tb