我有employees表,其中每个员工都有一个相关的start_date,end_date和一个工资.
注意:在底部,您可以找到导入结构和数据的SQL代码.
+----+-------+------------+------------+---------+
| id | name | start_date | end_date | salary |
+----+-------+------------+------------+---------+
| 1 | Mark | 2017-05-01 | 2020-01-31 | 2000.00 |
| 2 | Tania | 2018-02-01 | 2019-08-31 | 5000.00 |
| 3 | Leo | 2018-02-01 | 2018-09-30 | 3000.00 |
| 4 | Elsa | 2018-12-01 | 2020-05-31 | 4000.00 |
+----+-------+------------+------------+---------+
Run Code Online (Sandbox Code Playgroud)
对于给定的日期范围,我想提取给定日期范围内每个月的工资平均值.
更新:我想拥有MySQL 5.6的解决方案,但是拥有MySQL 8+的解决方案(仅用于个人知识)会很棒.
如果日期范围是2018-08-01 - 2019-01-31 …
我表中的每一行都有一个日期时间戳,我希望从现在起查询数据库,计算过去30天内的行数,前30天的行数等等.直到有30天的垃圾箱回到桌子的开头.
我已经成功地使用Python并进行了多次查询来执行此查询.但我几乎可以肯定它可以在一个MySQL查询中完成.
如何在SELECT中找到一年中的第一天?
SELECT `DATE`,`SomeValue1`,`SomeValue2`
FROM `SomeTableName`
WHERE (`DATE` >= [...first day of the year in date format...])
Run Code Online (Sandbox Code Playgroud)
我发现这个月 - 但我没有足够的掌握一年:(我一直在寻找这个单独的查询来查找月初和现在之间的数据)
WHERE (`DATE` between DATE_FORMAT(NOW() ,'%Y-%m-01') AND NOW() )
Run Code Online (Sandbox Code Playgroud) 可以在SQL中完成任何这些查询吗?
SELECT dates FROM system
WHERE dates > 'January 5, 2010' AND dates < 'January 30, 2010'
SELECT number FROM system
WHERE number > 10 AND number < 20
Run Code Online (Sandbox Code Playgroud)
我想创建一个generate_series,这就是我要问的原因.
我很幸运能在Stack Overflow上找到这段令人敬畏的代码,但是我想改变它所以它显示每半小时而不是每小时,但是搞乱它,只会让我破坏查询哈哈.
这是SQL:
SELECT CONCAT(HOUR(created_at), ':00-', HOUR(created_at)+1, ':00') as hours,
COUNT(*)
FROM urls
GROUP BY HOUR(created_at)
ORDER BY HOUR(created_at) ASC
Run Code Online (Sandbox Code Playgroud)
我怎么会每半小时得到一个结果?:)
另一件事是,如果它有半小时没有结果,我希望它返回0而不是仅仅跳过那一步.它看起来有点奇怪的胜利,我对查询做了统计,当它只跳过一个小时,因为没有:P