基于日期(字段总数)检索数据的MySQL查询
我是MySQL新手,请耐心等待: 我有一个表,我想在其中检索基于日期的数据并进行求和 这是我的桌子基于日期(字段总数)检索数据的MySQL查询,mysql,Mysql,我是MySQL新手,请耐心等待: 我有一个表,我想在其中检索基于日期的数据并进行求和 这是我的桌子 client datescanned problem title abc 2019-02-02 12345a High xyz abc 2019-02-02 12345b High xyz abc 2019-02-02 12345c High xyz
client datescanned problem title
abc 2019-02-02 12345a High xyz
abc 2019-02-02 12345b High xyz
abc 2019-02-02 12345c High xyz
abc 2019-02-02 12345d Medium xyz
abc 2019-02-09 12345e High xyz
abc 2019-02-09 12345f High xyz
abc 2019-02-09 12345g Low xyz
abc 2019-02-09 12345h Low xyz
abc 2019-02-09 12345j Low xyz
abc 2019-02-16 12345x High xyz
abc 2019-02-16 12345s High xyz
abc 2019-02-16 12345w High xyz
abc 2019-02-16 12345bs Medium xyz
我期望的输出是
client datescanned problem High Medium Low
abc 2019-02-02 12345x 3 1 0
abc 2019-02-09 12345s 2 0 3
abc 2019-02-16 12345w 3 1 0
这是我的密码
select client,datescanned, problem, severity,
count(case when severity = 'High' then 1 end) as High,
count(case when severity = 'Medium' then 1 end) as Medium,
count(case when severity = 'Low' then 1 end) as Low
from ssstest where client = "myuser"
group by client,datescanned, problem
这将获取所有的数字正确,但我想总结高,中,低每个日期
现在我明白了
client datescanned problem severity High Medium Low
abc 2019-02-02 12345a High 1 0 0
abc 2019-02-02 12345b High 1 0 0
abc 2019-02-02 12345c High 1 0 0
abc 2019-02-02 12345d Medium 0 1 0
abc 2019-02-09 12345e High 1 0 0
abc 2019-02-09 12345f High 1 0 0
abc 2019-02-09 12345g Low 0 0 1
abc 2019-02-09 12345h Low 0 0 1
abc 2019-02-09 12345j Low 0 0 1
abc 2019-02-16 12345x High 1 0 0
abc 2019-02-16 12345s High 1 0 0
abc 2019-02-16 12345w High 1 0 0
abc 2019-02-16 12345bs Medium 0 1 0
所以基本上,我只想把高、中、低的数据加起来,把同一个日期分组为一个
client datescanned problem High Medium Low
abc 2019-02-02 12345x 3 1 0
abc 2019-02-09 12345s 2 0 3
abc 2019-02-16 12345w 3 1 0
再次感谢你的帮助 您可以尝试使用条件聚合
更新1:
在MySQL/MariaDB查询中,以下内容没有多大意义:
=%当前用户登录%
如果要搜索的子字符串是当前用户登录,则使用
像“%CURRENT\u USER\u LOGIN%”
选择客户端、添加日期、计算机名称、严重性、,
countcase严重性为“高”时,则1结束为高,
countcase严重性为“中等”时,则1结束为中等,
-逗号标记“,”在“from”之前!!!产生误差
countcase严重性为低时,则1结束为低,
来自mytable,其中客户端=%CURRENT\u USER\u LOGIN%
按客户端、添加日期、计算机名称分组
>1064-您的SQL语法有错误;查看与您的MariaDB服务器版本相对应的手册,以了解要使用的正确语法,例如第5行的“从mytable(如“%CURRENT\u USER\u LOGIN%”客户端分组,dateadded,computerna:@enkiki,您可以立即查看谢谢您的帮助。。还是同一个错误,我删除了这3行计数,以查看错误是否来自第1、5、6行。。我可以看到桌子。我怀疑第2,3,4行有什么东西。。。我直接在Navicat查询中运行了代码,但也出现了错误,将当前用户的登录名替换为我的实际用户名。代码已更新,您的代码正在通过删除高中后的逗号来工作。。。只缺少按日期分组的组。。。请参阅更新的问题/代码。。谢谢!现在工作,我从组中删除了computername:
select client,dateadded, computername, severity,
count(case when severity='High' then 1 end) as High,
count(case when severity='Medium' then 1 end) as Medium,
count(case when severity='Low' then 1 end) as Low,
from mytable where client =%CURRENT_USER_LOGIN%
group by client,dateadded, computername