Sql server 创建函数以统计用户在数据库中的提交
我有一个包含用户的数据库和一个包含提交的用户的数据库。我做了一个选择,返回每个用户的提交计数,但我需要帮助将其转换为函数。 我所做的选择是:Sql server 创建函数以统计用户在数据库中的提交,sql-server,database,function,Sql Server,Database,Function,我有一个包含用户的数据库和一个包含提交的用户的数据库。我做了一个选择,返回每个用户的提交计数,但我需要帮助将其转换为函数。 我所做的选择是: SELECT u.Username, COUNT(*) AS 'Count' FROM Users AS u JOIN Commits AS c ON C.ContributorId = u.Id GROUP BY u.Username 我收到 ------------------------------ ----------- ANinedsa
SELECT u.Username, COUNT(*) AS 'Count'
FROM Users AS u
JOIN Commits AS c ON C.ContributorId = u.Id
GROUP BY u.Username
我收到
------------------------------ -----------
ANinedsa 2
AryaDenotehow 3
AryaNinehow 3
BlaAntigadsa 3
BlaSinduxrein 2
DarkImmagidsa 1
HighAsmahow 3
RoundAntigaBel 5
RoundArmydsa 2
RoundInspecindi 2
ScoreAntigarein 4
ScoreImmagidefon 4
ScoreSinduxIana 1
TheDivineBel 2
UnderSinduxrein 6
UnveiledDenoteIana 1
WhatTerrorBel 3
ZendArmyhow 3
我的问题是如何生成返回计数的函数。
例如:
SELECT dbo.udf_AllUserCommits('UnderSinduxrein')
输出
6
您可以使用以下代码:
CREATE FUNCTION dbo.udf_AllUserCommits
(
-- Add the parameters for the function here
@username NVARCHAR(100)
)
RETURNS INT
AS
BEGIN
-- Declare the return variable here
DECLARE @cnt INT
-- Get number of commits for specified user
SET @cnt = (SELECT COUNT(*)
FROM Users AS u
JOIN Commits AS c ON C.ContributorId = u.Id
WHERE Username = @username)
-- Return the result of the function
RETURN (@cnt);
END
在这里提出问题之前,你应该先阅读。如果有可能将此函数嵌入到另一个查询中,请使用内联表值函数以获得更好的性能。当您可以直接返回查询结果时,声明局部变量并没有真正的好处。@DaleK是的,我同意,我只是想让代码更容易理解。