选择具有Count,Sum和Sub-Query的记录

时间:2011-06-18 16:36:13

标签: asp.net sql tsql

我需要从统计信息不为零的链接表中选择所有链接:

Table tlink: 
    linkid, linkname, userid

Table tuser: 
    userid, username

Table tfact: 
    factid, factorder, userid

Table tstat: 
    statid, linkid, userid

订阅者中的用户订购记录在tfact。

中的点击次数

用户可以创建多个以tlink记录的链接。

任何链接上的每次点击都会记录在tstat中。

网页应过滤使用了有序点击的所有链接。

EG公司ABC每次点击3次,每次点击100次,总共点击300次。

然后他们创建几个链接,这些链接全部显示,直到使用总共300次点击。

我已经尝试了几个查询//子查询,但无济于事,并希望得到任何帮助。

2 个答案:

答案 0 :(得分:0)

这样的东西?

SELECT
    l.linkid,
    l.linkname,
    l.userid,
    u.username,
    f.factorder - s.clickCount AS clicksUnused
FROM
    tlink l
    INNER JOIN tuser u ON u.userid = l.userid
    INNER JOIN tfact f ON f.userid = l.userid
    INNER JOIN (
        SELECT
            linkid,
            userid,
            COUNT(*) AS clickCount
        FROM
            tstat
        GROUP BY
            linkid,
            userid
        ) s ON s.linkid = l.linkid AND s.userid = l.userid

答案 1 :(得分:0)

@NGLN

您好

我很抱歉没有提前回答,但已经离开了几天。

我认为我的工作正常:

  

SELECT L.linkid,F.OrderSum - S.clickCount AS clicksUnused FROM tlink AS L INNER JOIN(SELECT userid,SUM(factorder)AS OrderSum FROM tfact GROUP BY userid)AS F ON F.userid = L.userid INNER JOIN(SELECT userid,COUNT(*)AS clickCount FROM tstat GROUP BY userid)AS S ON S.userid = L.userid   --WHERE - clicksUnused> = 1

现在唯一的问题是我无法过滤出clickUnused高于1的链接。

任何想法,谢谢,迈克

更新了这项工作

  

WHERE F.OrderSum> S.clickCount

这是正确的方法吗?