#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.