作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在学校,正在尝试解决老师提出的这个问题。我没有询问教练,因为他通常会在两周后回复我。
以下是问题的内容:
使用数据库中的博客表创建一个查询,该查询将使用 WHEN 语句来:
按origcmd字段对满足以下条件的记录进行分类您的类别应如下所示:
•类别 1 = origcmd 以 GET 开头
•类别 2 = origcmd 以 POST 开头
•类别 3 = origcmd 以 HEAD 开头
•类别 4 = 所有剩余记录
•统计每组中的记录•在不修改字段的情况下对原始日期字段的小时部分进行平均。
我在没有平均值的情况下尝试了以下操作,因为我无法使用以下方法正确拉取:
Select CASE
WHEN origcmd LIKE "GET%" THEN "Category 1"
WHEN origcmd LIKE"POST%" THEN "Category 2"
WHEN origcmd LIKE "HEAD%" THEN "Category 3"
Else "Category 4 All of left over records" END as "Original CMD",
Count(*) AS Total
FROM WebLog
使用此功能时,它仅拉动第一条 WHEN 行并忽略除计数之外的所有其余行。我对此很陌生,并且很难理解 MySQL。我想我可能需要使用 SubString cmd,但希望在这里得到一些可能有帮助的指导。
问候,
最佳答案
更新:
SELECT category,
CASE category WHEN 1 THEN 'GET' WHEN 2 THEN 'POST' WHEN 3 THEN 'HEAD' ELSE 'OTHER' END command,
COUNT(*) rec_count,
ROUND(AVG(SUBSTRING(origdate, 14, 2))) avg_hour
FROM
(SELECT w.*,
CASE WHEN LEFT(origcmd, 3) = 'GET' THEN 1
WHEN LEFT(origcmd, 4) = 'POST' THEN 2
WHEN LEFT(origcmd, 4) = 'HEAD' THEN 3
ELSE 4 END category
FROM WebLog w) q
GROUP BY category
输出:
| CATEGORY | COMMAND | REC_COUNT | AVG_HOUR |
---------------------------------------------
| 1 | GET | 4 | 10 |
| 2 | POST | 3 | 14 |
| 3 | HEAD | 1 | 17 |
| 4 | OTHER | 2 | 6 |
<强> SQLFiddle
关于mysql - 带有 LIKE 和子字符串的 When 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16534770/
我是一名优秀的程序员,十分优秀!