Sql 根据具有联接的同一查询的结果返回查询结果

Sql 根据具有联接的同一查询的结果返回查询结果,sql,Sql,我正努力用语言来表达这一点,因此这个标题很糟糕 我希望返回一个查询的结果,同时返回与另一个表内部联接的同一查询的结果(因此,value1的总数与另一个表中出现的value1的数量)。因此,我想返回以下查询的每个所有者的计数 SELECT DISTINCT(Owner), COUNT(Owner) FROM Actions INNER JOIN [DataCapture].[dbo].DataCapture ON Actions.Contact_ID = DataCapture.ID GROUP

我正努力用语言来表达这一点,因此这个标题很糟糕

我希望返回一个查询的结果,同时返回与另一个表内部联接的同一查询的结果(因此,value1的总数与另一个表中出现的value1的数量)。因此,我想返回以下查询的每个所有者的计数

SELECT DISTINCT(Owner), COUNT(Owner) FROM Actions
INNER JOIN [DataCapture].[dbo].DataCapture ON Actions.Contact_ID = DataCapture.ID 
GROUP BY Owner ORDER BY Owner
然后我想从总数中找出百分比

SELECT DISTINCT(Owner), COUNT(Owner) FROM Actions 
GROUP BY Owner ORDER BY Owner
我认为INTERSECT或EXCEPT是一种方式,但由于我返回的是不同的计数,所以效果不太好

编辑:为清楚起见,第一次和第二次查询的结果分别如下:

USER1   212
USER2   613
USER3   155
USER4   375
USER5   8
USER6   76



USER1     1218
USER2     849
USER3     237
USER4     1062
USER5     39
USER6     418

因此,我想要的是,在1个查询中,第一个查询的结果与第二个查询的结果相比,得到百分比。

您可以使用CTE(我猜您正在使用Sql Server)或内部查询来实现这一点

select a.Owner, count(*), totalActions, (count(*) * 1.0 / totalActions) * 100 as yourpercentage
from Actions a
join DataCapture db on db.Id = a.Contact_Id
join (select Owner, count(*) as totalActions from Actions
      group by Owner) total on total.Owner = a.Owner
group by a.Owner, total.totalActions

不需要通过分组方式进行区分,顺便问一下,CTE示例能满足您的需要吗

SELECT 
       ACTIONS_BY_DATACAP.Owner AS OWNER, 
       (ACTIONS_BY_DATACAP.Cnt/TOT_ACTIONS_BY_USR.TotCnt)*100 AS PERCENTAGE 
FROM
(
 SELECT DISTINCT(Owner) as Owner, COUNT(Owner) as Cnt FROM Actions
 INNER JOIN [DataCapture].[dbo].DataCapture ON Actions.Contact_ID =  
 DataCapture.ID 
 GROUP BY Owner ORDER BY Owner
) AS ACTIONS_BY_DATACAP
INNER JOIN 
(
SELECT DISTINCT(Owner), COUNT(Owner) as TotCnt FROM Actions 
GROUP BY Owner ORDER BY Owner
) AS TOT_ACTIONS_BY_USR
ON TOT_ACTIONS_BY_USR.Contact_ID =  
 ACTIONS_BY_DATACAP.ID 
;WITH q1 as
(SELECT Owner, COUNT(Owner) c1 FROM Actions
INNER JOIN [DataCapture].[dbo].DataCapture ON Actions.Contact_ID = DataCapture.ID 
GROUP BY Owner),
q2 as
(SELECT Owner, COUNT(Owner) c2
FROM Actions 
GROUP BY Owner)

SELECT
     q1.Owner, q1.c1, q2.c2, q1.c1/q2.c2 percentage
FROM
    q1
JOIN
    q2 ON q1.Owner = q2.Owner
ORDER BY 
   Owner

仍然不太清楚你想要实现什么。你能提供样本作为输入/输出数据吗?我将添加两个查询的结果,1秒查询没有运行,total.totalActions在select子句中,但不在group by子句中。是的,有一个where子句我没有包含在原始问题中,一旦我发现它继续两次,这将正确返回:)谢谢