商務英語計算機英語

數據庫中sum的用法

本文已影響 5.25K人 

數據庫中sum的用法的用法你知道嗎?下面小編就跟你們詳細介紹下數據庫中sum的用法的用法,希望對你們有用。

ing-bottom: 54.53%;">數據庫中sum的用法

  數據庫中sum的用法的用法如下:

根據BOL中解釋COUNT用來返回組中的項數。

COUNT(*)返回組中的項數。包括 NULL 值和重複項

COUNT(ALL expression):對組中的每一行都計算 expression 並返回非空值的數量。默認值。

COUNT(DISTINCT expression):對組中的每一行都計算 expression 並返回唯一非空值的數量。

ID Value

----------- --------------------------------------------------

1 A

2 B

2 B

3 B

4 NULL

select COUNT(* ) from Table_1

-----------

5

SELECT COUNT(Value) FROM Table_1

-----------

4

SELECT COUNT(DISTINCT Value) FROM Table_1

-----------

2

SUM返回表達式中所有值的和或僅非重複值的和。SUM 只能用於數字列。空值將被忽略

ID Value

----------- -----------

1 1

2 2

3 3

4 4

5 NULL

6 5

7 5

SELECT SUM(Value) From Table_1

-----------

20

SELECT SUM(DISTINCT Value) From Table_1

-----------

15

以Northwind數據庫中的Employees,Orders表爲例,列出所有僱員的姓名以及其擁有的Order的個數。分別用Count()和SUM()實現。

SELECT oyeeID,FirstName,LastName,Count(oyeeID) AS OrderCount

FROM oyees AS E LEFT JOIN rs AS O

ON oyeeID = oyeeID

Group By oyeeID,FirstName,LastName

SELECT oyeeID,FirstName,LastName,SUM(CASE WHEN oyeeID IS NULL THEN 0 ELSE 1 END) AS OrderCount

FROM oyees AS E LEFT JOIN rs AS O

ON oyeeID = oyeeID

Group By oyeeID,FirstName,LastName

注意的是這裏一定不能用COUNT(*),因爲COUNT(*)是計算行數,對於沒有定單的用戶也是爲1。只有在JOIN的情況下,COUNT(*)纔等效於Count(oyeeID

附:這兩個表的定義。

USE [Northwind]

GO

/****** Object: Table [dbo].[Employees] Script Date: 01/13/2012 22:57:44 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[Employees](

[EmployeeID] [int] IDENTITY(1,1) NOT NULL,

[LastName] [nvarchar](20) NOT NULL,

[FirstName] [nvarchar](10) NOT NULL,

[Title] [nvarchar](30) NULL,

[TitleOfCourtesy] [nvarchar](25) NULL,

[BirthDate] [datetime] NULL,

[HireDate] [datetime] NULL,

[Address] [nvarchar](60) NULL,

[City] [nvarchar](15) NULL,

[Region] [nvarchar](15) NULL,

[PostalCode] [nvarchar](10) NULL,

[Country] [nvarchar](15) NULL,

[HomePhone] [nvarchar](24) NULL,

[Extension] [nvarchar](4) NULL,

[Photo] [image] NULL,

[Notes] [ntext] NULL,

[ReportsTo] [int] NULL,

[PhotoPath] [nvarchar](255) NULL,

CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED

(

[EmployeeID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

ALTER TABLE [dbo].[Employees] WITH NOCHECK ADD CONSTRAINT [FK_Employees_Employees] FOREIGN KEY([ReportsTo])

REFERENCES [dbo].[Employees] ([EmployeeID])

GO

ALTER TABLE [dbo].[Employees] CHECK CONSTRAINT [FK_Employees_Employees]

GO

ALTER TABLE [dbo].[Employees] WITH NOCHECK ADD CONSTRAINT [CK_Birthdate] CHECK (([BirthDate] < getdate()))

GO

ALTER TABLE [dbo].[Employees] CHECK CONSTRAINT [CK_Birthdate]

GO

USE [Northwind]

GO

/****** Object: Table [dbo].[Orders] Script Date: 01/13/2012 23:02:09 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[Orders](

[OrderID] [int] IDENTITY(1,1) NOT NULL,

[CustomerID] [nchar](5) NULL,

[EmployeeID] [int] NULL,

[OrderDate] [datetime] NULL,

[RequiredDate] [datetime] NULL,

[ShippedDate] [datetime] NULL,

[ShipVia] [int] NULL,

[Freight] [money] NULL,

[ShipName] [nvarchar](40) NULL,

[ShipAddress] [nvarchar](60) NULL,

[ShipCity] [nvarchar](15) NULL,

[ShipRegion] [nvarchar](15) NULL,

[ShipPostalCode] [nvarchar](10) NULL,

[ShipCountry] [nvarchar](15) NULL,

CONSTRAINT [PK_Orders] PRIMARY KEY CLUSTERED

(

[OrderID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[Orders] WITH NOCHECK ADD CONSTRAINT [FK_Orders_Customers] FOREIGN KEY([CustomerID])

REFERENCES [dbo].[Customers] ([CustomerID])

GO

ALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Customers]

GO

ALTER TABLE [dbo].[Orders] WITH NOCHECK ADD CONSTRAINT [FK_Orders_Employees] FOREIGN KEY([EmployeeID])

REFERENCES [dbo].[Employees] ([EmployeeID])

GO

ALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Employees]

GO

ALTER TABLE [dbo].[Orders] WITH NOCHECK ADD CONSTRAINT [FK_Orders_Shippers] FOREIGN KEY([ShipVia])

REFERENCES [dbo].[Shippers] ([ShipperID])

GO

ALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Shippers]

GO

ALTER TABLE [dbo].[Orders] ADD CONSTRAINT [DF_Orders_Freight] DEFAULT (0) FOR [Freight]

GO

猜你喜歡

熱點閱讀

最新文章

推薦閱讀