SQL查询帮助,ms sql server 2005(分组依旧)

时间:2009-08-03 09:54:28

标签: sql-server sql-server-2005 group-by

我在ms sql server 2005中编写了一个查询,并且在运行时遇到了一些麻烦。我需要我的查询包括:

  1. 包括日期范围2009-07-20至2009-08-04的所有文档
  2. 使用“尺寸”字段
  3. 包含Sum列
  4. 包含记录计数列
  5. 按名称分组
  6. select Name, count(*) AS FileCount, SUM(Size)  
    From alldocs 
    Group by DirName 
    HAVING TimeCreated >= '2009-07-20' AND 
    TimeCreated <= '2009-08-04'
    

3 个答案:

答案 0 :(得分:2)

由于您正在查询非聚合的字段(SUM,COUNT,AVG),因此您可以使用正常的WHERE:

SELECT
  DirName, count(*) AS FileCount, SUM(Size)
FROM
  alldocs 
WHERE
  TimeCreated >= '2009-07-20' 
  AND TimeCreated <= '2009-08-04'
GROUP BY
  DirName 

如果你想根据一个聚合物来限制某些东西,你只需要HAVING,例如

HAVING Count(*) > 5

马克

PS:如果要显示MB而不是字节,请使用以下查询:

SELECT
  DirName, count(*) AS FileCount, SUM(Size) / (1024*1024) as 'Size MB'
FROM
  alldocs 
WHERE
  TimeCreated >= '2009-07-20' AND TimeCreated <= '2009-08-04'
GROUP BY
  DirName 

答案 1 :(得分:0)

为什么不

select Name, count(*) AS FileCount, SUM(Size)
From alldocs
WHERE TimeCreated between '2009-07-20' AND '2009-08-04'
Group by DirName

答案 2 :(得分:0)

您应该将名称列添加到分组依据列表中。

SELECT Name, count(*) AS FileCount, SUM(Size)
FROM alldocs
WHERE TimeCreated between '2009-07-20' AND '2009-08-04'
GROUP BY Name