[英]SQL Server Combining queries
我正在尝试获取数据库中存储的每个Web URL页面的用户总访问次数。
贝娄是我的SQL查询,它将显示URL包含该关键字的唯一用户总数。
SELECT COUNT(DISTINCT userId) as someUrlTitleTotalVisitors
FROM someTable
WHERE urlCol LIKE '%someUrlKeyword%'
现在,我还有50多页可以浏览,例如:
SELECT COUNT(DISTINCT userId) as anotherUrlTitleTotalVisitors
FROM someTable
WHERE urlCol LIKE '%anotherUrlKeyword%'
。等等..
我假设我不需要为每个URL标题编写50多个单独的查询,并且我应该能够通过一个调用来获取所有数据。
因此,我的问题是如何将该查询合并为一个查询?
好的,如果您没有要在表上检查的关键字,那么可悲的是,您正在查找的查询如下:
SELECT CASE WHEN urlCol LIKE '%Url-Title-1%' THEN 'Url-Title-1'
WHEN urlCol LIKE '%Url-Title-2%' THEN 'Url-Title-2'
WHEN urlCol LIKE '%Url-Title-3%' THEN 'Url-Title-3'
WHEN urlCol LIKE '%Url-Title-4%' THEN 'Url-Title-4'
..... END Url,
COUNT(DISTINCT userId) TotalVisitors
FROM someTable
WHERE urlCol LIKE '%Url-Title-1%'
OR urlCol LIKE '%Url-Title-2%'
OR urlCol LIKE '%Url-Title-3%'
OR urlCol LIKE '%Url-Title-4%'
.....
GROUP BY CASE WHEN urlCol LIKE '%Url-Title-1%' THEN 'Url-Title-1'
WHEN urlCol LIKE '%Url-Title-2%' THEN 'Url-Title-2'
WHEN urlCol LIKE '%Url-Title-3%' THEN 'Url-Title-3'
WHEN urlCol LIKE '%Url-Title-4%' THEN 'Url-Title-4'
..... END
现在,如果您可以将这些关键字放在表上,则查询将像这样:
SELECT B.KeyWord,
COUNT(DISTINCT userId) TotalVisitors
FROM someTable A
INNER JOIN TableWithKeywords B
ON A.urlCol LIKE '%' + B.KeyWord + '%'
GROUP BY B.KeyWord
有很大的不同,对吗?您可以在不触摸查询的情况下在该表上添加或删除关键字,非常方便。
听起来您需要按URL分组:
SELECT urlCol, COUNT(DISTINCT userId) as title1TotalVisitors
FROM someTable
GROUP BY urlCol
SELECT COUNT(DISTINCT userId) as title1TotalVisitors,urlCol
FROM someTable
WHERE urlCol LIKE '%Url-Title-[1-50]%'
Group by urlCol
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.