Подсчитывать данные из двух столбцов в одном или двух запросах

#sql #group-by #sql-server-2005 #count #distinct

#sql #группировать по #sql-server-2005 #считать #различное #подсчитывать

Вопрос:

В моей таблице есть следующие отдельные строки:

 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
  

Любые советы о том, как этого добиться, были бы высоко оценены, спасибо!

Комментарии:

1. Извините, это sql server, я перепутал тег

2. Ваш 1-й запрос правильный, хотя вы можете заменить COUNT(ClientID) на COUNT(*) . Во 2-м запросе используйте COUNT(DISTINCT URL) .

Ответ №1:

Вы вызываете агрегацию и count() следующим образом:

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

Комментарии:

1. Я получаю следующую ошибку: Error: Conversion failed when converting the nvarchar value '' to data type bit.