嗨,我是一个php开发人员在mysql中的薄弱中复杂的查询使我的头炒。下表是 vulnerability
.
+-----------------------------------------------------------------------------------------------+
| id | webisite_id | low_count| high_count | medium_count | date_time | vul_date |
+-----------------------------------------------------------------------------------------------+
| 20 | 6 | 1 | 1 | 1 | 2018-07-04 09:14:04 | 2018-02-01 |
| 19 | 6 | 30 | 30 | 30 | 2018-07-04 09:13:38 | 2018-01-30 |
| 18 | 6 | 1 | 1 | 1 | 2018-07-04 09:13:16 | 2018-01-01 |
+-----------------------------------------------------------------------------------------------+
此表表示数据库中每个网站的低、中、高漏洞计数。我们可以为每个网站输入尽可能多的条目。但网站唯一相关的条目是每个月的最新条目(基于 vul_date
).
在这里我需要帮助我要查询取总数低,高,中的每个网站的每个月的过去1年,例如如果->网站与 id
1在6月份有1个、2个、3个低、高、中等数量的漏洞,而->在6月份有 id
2分别为7、8、9,结果应为6月8日、10日、12日。而像上一年每个月的成绩都应该得到。如果没有输入,则应为0。
请注意,条目应为的最大值 vul_date
如果一个网站上有多个条目 vul_date
获取最新信息 date_time
进入。
我尽量把问题写得简单些。希望问题被理解。请帮帮我
提前谢谢。
2条答案
按热度按时间hm2xizp91#
子查询a获取包含最新数据时间的vul\u日期,然后使用与日期/日历表的右联接将其自联接、聚合,然后填充缺少的日期。如果你没有一个日期/日历,这将是有益的这类运动坚果有替代品,你可以找到在这样做。
结果
py49o6xq2#
我认为下面的查询将为您工作。
它做的是,首先找到每个网站id的最新进入月份,这是你的最大vul\ u日期。
如果vul\u日期有多个条目,它将使用date\u time从中选择最大值。最后,它将所有的网站日期按月份分组后求和。
您可以将上述查询更改为在没有任何网站条目的月份获得0值。