聚合函数如何计算列并在同一查询中返回值

时间:2012-12-19 09:50:50

标签: sql sql-server

我正在尝试学习聚合函数如何在SQL中工作,我无法计算出如何计算值在查询中出现的次数。

我正在使用 MSSQL 2008 ,我尝试的所有内容似乎都会导致错误。

以下是我的询问:

SELECT category, 
       template, 
       galleryshortDescription, 
       galleryLongDescription, 
       GalleryName,   
       GalleryTitle, 
       GalleryID, 
       GalleryCreatedDate, 
       GalleryLastUpdated, 
       GalleryPublished, 
       GalleryViews, 
       ObjectID, 
       GalleryDescription, 
       HtmlMetaKeywords, 
       HtmlMetaDescription

FROM dbo.ImageGallery

我想返回category字段以及它在此查询中显示的总次数,并且我已尝试使用

count (category) AS category_counter

任何建议非常感谢

提前致谢

4 个答案:

答案 0 :(得分:1)

  

我想返回类别字段以及总数   它出现在此查询中的次数

您需要的是使用GROUP BYCOUNT如此:

SELECT
  Category,
  COUNT(category) AS category_counter
FROM  dbo.ImageGallery
GROUP BY category;

SQL Fiddle Demo

例如,此查询将为您提供以下内容:

|  CATEGORY | CATEGORY_COUNTER |
--------------------------------
| Category1 |                2 |
| Category2 |                2 |
| Category3 |                3 |
| Category4 |                3 |

但是你的表中有一个大问题

您的表格不是normalized,您应该将此表格拆分为以下表格:

<强> Categories:

  • CategoryId
  • CategoryName

<强> GalleriesProperties

  • GalleryId
  • GalleryName
  • GalleryshortDescription
  • GalleryLongDescription
  • GalleryTitle
  • GalleryCreatedDate
  • GalleryLastUpdated
  • GalleryPublished
  • GalleryViews
  • GalleryDescription

<强> HTMLMetas

  • HTMLMetaID
  • HtmlMetaKeywords
  • HtmlMetaDescription

然后你的表格 ImageGallery 就像:

  • GalleryId
  • CategoryId外键引用Categories表(CategoryID),
  • Template
  • HTMLMetaID htmlmeta表的外键。

这只是一个例子,它可能需要在您的上下文中进行更多调整。但是你应该阅读更多相关内容。

答案 1 :(得分:0)

答案 2 :(得分:0)

你必须使用Count(类别)和按类别分组

SELECT  category, count(category) as ColumnNameofYourChoice
  FROM dbo.ImageGallery 
     group by category

使用计数时,你必须使用group by,你需要在其上进行计数。

答案 3 :(得分:0)

最好在Temp表中存储类别和No_of_category。之后,您可以将您的餐桌加入Temp餐桌.. 例如

SELECT  category, count(category) No_Of_category
into #temp
  FROM dbo.ImageGallery 
     group by category

SELECT cat.category, t.No_Of_category,
      cat. template, 
       cat.galleryshortDescription, 
       cat.galleryLongDescription, 
       cat.GalleryName,   
       cat.GalleryTitle, 
       cat.GalleryID, 
       cat.GalleryCreatedDate, 
       cat.GalleryLastUpdated, 
       cat.GalleryPublished, 
       cat.GalleryViews, 
       cat.ObjectID, 
       cat.GalleryDescription, 
       cat.HtmlMetaKeywords, 
       cat.HtmlMetaDescription

FROM dbo.ImageGallery cat
left outer join #temp t on cat.category=t.category