每天计算和汇总不同的值
Posted
技术标签:
【中文标题】每天计算和汇总不同的值【英文标题】:count and sum different values per each day 【发布时间】:2016-11-26 11:31:05 【问题描述】:每天如何计算不同的值?以及每天的总价值?在一个请求中。
key1 | key2 | tdate | tview
1 | 20161123454647 | 2016-11-23 11:11:11 | view1
2 | 20161123454648 | 2016-11-23 11:11:11 | view2
3 | 20161122454649 |2016-11-22 11:11:11 | view2
4 | 20161122454650 |2016-11-22 11:11:11 | view1
5 | 20161122454653 |2016-11-22 11:11:11 | view2
6 | 20161122454661 |2016-11-22 11:11:11 | view2
7 | 20161121454622 |2016-11-21 11:11:11 | view3
8 | 20161121454679 |2016-11-21 11:11:11 | view1
9 | 20161121454684 |2016-11-21 11:11:11 | view3
我发现每天计算 tview 的所有值的总和:
SELECT DATE(tdate) Date, COUNT(DISTINCT tview) totalOfViews FROM mytable GROUP BY DATE(tdate)
我有一个键 (key2),它连接了日期和渲染的数量,因为我不想在同一天配置两个相同的渲染。
当我使用“INSERT ON DUPLICATE key2 UPDATE”插入新渲染时,这对我来说是最容易的。我只更新一个请求的视图数。我不知道'INSET ON DUPLICATE' 更新:newview。也很有趣的问题;-)
日期是我表中的时间戳。
一个有趣的输出:
day | totaView1 | totalView2 | totalView3 | totalView1+view2 |totalOfViews
2016-11-23 | 1 | 1 | 0 | 2 | 2
2016-11-22 | 1 | 3 | 0 | 4 | 4
2016-11-21 | 1 | 0 | 2 | 1 | 3
在我找到请求的日期范围并比较每天的数字视图的演变之后。示例:
Day (currentmonth) | totaView1 | totalView1 (lastmonth) |totalOfViews
难道“alter table”可以做到这个结果?
【问题讨论】:
请向我们展示您的预期输出,因为目前还不清楚。 我编辑结果 我发现有一个简单的结果。因为在我将计算周期内的平均 poucent 和弹性之后。 ;-) 我希望最有趣 问题已经清楚了,感谢更新。 我在 mysql 中发现使用 alter table 有可能在不同时期求和。但我会在之后研究这个...... 【参考方案1】:一种可能性是使用条件聚合:
SELECT DATE(tdate) AS day,
SUM(CASE WHEN tview = 'view1' THEN 1 ELSE 0 END) AS totaView1,
SUM(CASE WHEN tview = 'view2' THEN 1 ELSE 0 END) AS totaView2,
SUM(CASE WHEN tview = 'view3' THEN 1 ELSE 0 END) AS totaView3,
SUM(CASE WHEN tview = 'view1' OR tview = 'view2'
THEN 1 ELSE 0 END) AS totaView1Or2,
COUNT(*) AS totalOfViews
FROM mytable
GROUP BY DATE(tdate)
【讨论】:
谢谢!!我们也可以用它来选择时期吗?本月 WHERE tdate BETWEEN DATE_ADD(NOW( ) , INTERVAL -1 MONTH ) AND NOW( ) 和上个月? WHERE tdate BETWEEN DATE_ADD(NOW() , INTERVAL -2 MONTH ) AND DATE_ADD(NOW() , INTERVAL -1 MONTH ) @julux 是的,您可以将此条件添加到WHERE
子句中。
谢谢。 SQL 请求是一项运动!
我当然会努力保持身材!
我将添加平均和统计结果。以上是关于每天计算和汇总不同的值的主要内容,如果未能解决你的问题,请参考以下文章