Sql 根据具有联接的同一查询的结果返回查询结果
我正努力用语言来表达这一点,因此这个标题很糟糕 我希望返回一个查询的结果,同时返回与另一个表内部联接的同一查询的结果(因此,value1的总数与另一个表中出现的value1的数量)。因此,我想返回以下查询的每个所有者的计数Sql 根据具有联接的同一查询的结果返回查询结果,sql,Sql,我正努力用语言来表达这一点,因此这个标题很糟糕 我希望返回一个查询的结果,同时返回与另一个表内部联接的同一查询的结果(因此,value1的总数与另一个表中出现的value1的数量)。因此,我想返回以下查询的每个所有者的计数 SELECT DISTINCT(Owner), COUNT(Owner) FROM Actions INNER JOIN [DataCapture].[dbo].DataCapture ON Actions.Contact_ID = DataCapture.ID GROUP
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子句我没有包含在原始问题中,一旦我发现它继续两次,这将正确返回:)谢谢