我想写一个可以提供两列的查询:
1>查询类型2>计数
此结果集应具有以下结构
此处应预先定义第1列值,并且计数必须为 计算。我想检查源表的Request列和 找到具体的模式。如果发现该模式,则增加计数。
例如:
如果在请求列中找到“greenhopper”字样,那么 属于GREENHOPPER类型。
OR
如果找到“小工具”一词,则其类型为DASHBOARD。和 等......
所以我想通过使用日志来分析各种类别的用法 表。
因此最后我可以获得使用量,之后我可以构建 一张饼图。
答案 0 :(得分:1)
SELECT 'Greenhopper' AS TypeOfQuery, COUNT(*) AS Cnt
FROM YourTable
WHERE Request LIKE '%Greenhopper%'
UNION ALL
SELECT 'Dashboard', COUNT(*)
FROM YourTable
WHERE Request LIKE '%gadgets%'
-- And so forth
你说他们是预定义的吗?所以你有~10个不同的陈述UNION
'在一起。
答案 1 :(得分:1)
WITH Requests AS
(
SELECT
CASE
WHEN Request LIKE '%Greenhopper%' THEN 'GreenHopper'
WHEN Request LIKE '%gadgets%' THEN 'Gadgets'
-- and so on
ELSE 'Misc'
END RequestType
FROM YourTable
)
SELECT
RequestType,
COUNT(*) RequesCount
FROM Requests
GROUP BY RequestType
;
没有要测试的数据,但我相信这种方法会表现得更好,因为表格的扫描时间会更短。由于LIKE和第一张外卡,性能永远不会是理想的。这将阻止寻求。
进一步解释为什么LIKE不执行here
刚看了一下这个问题,您可以通过更改搜索字符串来进一步提高性能,使其在右侧只有一个通配符
e.g。喜欢'GET / rest / gadget%'等等。