TSQL - 对 sp_MSforeachdb 的结果取平均值

TSQL - Averaging a result from sp_MSforeachdb

我在同一个 SQL 服务器上有数百个数据库 (SQL2012),它们都具有相同的基本结构,我正在尝试获取 'Contacts' 我们的数据库。

我可以 运行 一个 sp_MSforeachdb 查询,该查询显示联系人 table 中有多少联系人的列表,但我需要对结果进行平均。有关执行此操作的任何指导。

这是我目前得到的查询:

exec sp_MSforeachdb
'use ?
IF DB_NAME() NOT IN ( "model","tempdb","master","msdb")
select count (CONTACTID) as TotalContacts from contact_tbl '

我很欣赏这可能是相当基本的东西,但我是新来的,我用谷歌搜索了其中的废话,并从这里和其他地方尝试了很多不同的建议,但没有成功。

如有任何帮助,我们将不胜感激。

你需要一个临时工 table。将 Sp_msforeachdb 程序结果插入一个温度 table 并找到平均值

IF Object_id('tempdb..#avg') IS NOT NULL
  DROP TABLE #avg

CREATE TABLE #avg(cnt INT)

INSERT INTO #avg(cnt)
EXEC Sp_msforeachdb
  'use ?
    IF DB_NAME() NOT IN ( "model","tempdb","master","msdb")
    select count (CONTACTID) as TotalContacts from contact_tbl '

SELECT Avg(cnt)
FROM   #test