【问题标题】:Count data from two columns in one or two queries在一个或两个查询中计算来自两列的数据
【发布时间】:2021-01-01 09:13:02
【问题描述】:

我的表中有以下不同的行:

JobID   ClientID    Date                URL
a       1           Apr 27 2020 8:21AM  http://somewebsite.com
a       1           Apr 29 2020 12:57AM http://somewebsite.com
a       1           Apr 30 2020 5:05AM  http://anotherwebsite.com
a       2           May 3 2020 6:09PM   http://anotherwebsite.com
a       3           May 20 2020 12:55AM https://thirdlink.com
b       1           Apr 30 2020 5:16AM  http://anotherwebsite.com
b       2           May 3 2020 6:09PM   http://anotherwebsite.com
b       2           May 11 2020 8:39AM  https://thirdlink.com

我正在尝试构建一个或两个会产生以下结果的查询:

  • 每个客户每个作业的总点击次数:
JobID   ClientID    Number of Clicks
a       1           3
a       2           1
a       3           1
b       1           1
b       2           2
  • 每个作业每个客户端的唯一 URL 数:
JobID   ClientID    Number of URLs
a       1           2
a       2           1
a       3           1
b       1           1
b       2           2

这是我尝试过的,但它没有正确聚合数据:

SELECT ClientID,
COUNT(ClientID) AS [Number of Clicks],
JobId
FROM [table]
GROUP BY ClientID, JobId
SELECT ClientID,
COUNT(URL) AS [Number of URLs],
JobId
FROM [table]
GROUP BY ClientID, JobId

任何关于如何实现这一点的提示将不胜感激,谢谢!

【问题讨论】:

  • 对不起,是sql server,我把标签搞混了
  • 您的第一个查询是正确的,尽管您可以将 COUNT(ClientID) 替换为 COUNT(*)。在您的第二个查询中使用COUNT(DISTINCT URL)

标签: sql group-by sql-server-2005 count distinct


【解决方案1】:

你导致聚合和count()如下:

select 
    jobid, 
    clientid, 
    count(*) cnt_clicks, 
    count(distinct url) cnt_distinct_url
from mytable
group by clientid, jobid

【讨论】:

  • 我收到以下错误:Error: Conversion failed when converting the nvarchar value '' to data type bit.
猜你喜欢
  • 2015-04-27
  • 1970-01-01
  • 2021-11-07
  • 2018-10-23
  • 1970-01-01
  • 2015-06-04
  • 1970-01-01
  • 1970-01-01
  • 2011-05-02
相关资源
最近更新 更多