我已经设置了一个报告项目,我希望获得我的表的统计信息,然后将其集成到Web服务中。但是对于以下查询,我得到的结果不正确,我会在下面注明:
1 - 获取给定日期的新条目数
SELECT COUNT(*) AS RecordsCount,CAST(FLOOR(CAST(dateadded AS float))
AS datetime)as collectionDate
FROM TFeed GROUP BY CAST(FLOOR(CAST(dateadded AS float))
AS datetime) order by collectionDate
工作正常,我可以成功地将其放入条形图中。
2 - 获取过去10天内给定客户请求的每个searchterm最高记录的前10个搜索引擎
SELECT TOP 10 searchterm, clientId, COUNT(*) AS TermResults FROM TFeed
where dateadded > getdate() - 10 GROUP BY
searchterm,clientId order by TermResults desc
不起作用 如果我在数据库中查询报告中返回98的那些术语之一,则数据库中的结果为984。
3 - 我也需要在给定的一天内获得每个客户的新记录数。
此外,我想知道是否可以将这些查询放入一个报告中,而不是每个查询的单独报告,这不是一个大问题,但之后不得不剪切并粘贴到一个文档中是乏味的。
赞赏任何想法
答案 0 :(得分:2)
对于#2,
WITH tmp as
(
SELECT clientId, searchTerm, COUNT(1) as TermResults,
DENSE_RANK() OVER (partition by clientId
ORDER BY clientId, COUNT(1) DESC) as rnk
FROM TFeed
WHERE dateadded > GETDATE() - 10
GROUP BY clientId, searchterm
)
SELECT *
FROM tmp
WHERE rnk < 11
USE RANK()如果你想跳过排名,如果有两个匹配(如果让我们说term1和term2具有相同的计数,它们都是排名1,下一个排名将排在第3位而不是第2位< / p>
对于#3,
您可以在一个报告中定义多个数据集。然后,您只需创建三个图表/表格并将其与各自的数据集相关联