您好我正在尝试编写一个能够完成以下任务的查询:(我不熟悉MySQL)
从origcmd字段中提取所请求页面的文件扩展名,只是文件扩展名。无论文件扩展名的长度如何,它都会起作用。我想按页面对其进行分组,并计算每组中的记录数。然后按计数每个分组中记录的字段按降序对分组记录进行排序。
表:WebLog列:ipno,dunno1,dunno2 origdate,origzone, origcmd,recode,bytes
数据:1.1.1.1, - , - ,{15 / Mar / 2008:16:36:09,-0700},GET /images/noodle.jpg HTTP / 1.1,200,335
数据输出应如下所示:
| PageRequested | NumberOfHits |
+---------------+--------------+
| htm | 287 |
| gif | 217 |
| jpg | 48 |
| | 4 |
| xbm | 3 |
| cgi | 2 |
| txt | 2 |
| NULL | 2 |
| html | 1 |
我有这个查询,我正在处理但是我遇到的问题只是第一部分我无法找到表所需的别名。
SELECT Substring_INDEX(PageRequested, '.', 1)
From(Select Substring_INDEX(origcmd, '.', -2)As PageRequested From WebLog);
答案 0 :(得分:1)
select PageRequested,
count(PageRequested) as Hits
from (
select substring_index(substring_index(origcmd, '.', -2), ' ', 1) as PageRequested
from weblog) temp
group by PageRequested
order by Hits desc
使用SQLFiddle:http://sqlfiddle.com/#!2/94d04/3