今日下载,昨日下载,本周下载怎么实现

advancejar 2009-11-09 07:04:33
我已有表是这样的
tab1
id 下载地址 名称
1 aaa.rar x1
2 bbb.rar x2
我想实现今日下载,昨日下载,本周下载,是在tab1上扩展字段还是临做一个表

然后怎么设计字段比较好?
...全文
66 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2009-11-09
  • 打赏
  • 举报
回复
另建一表。
tabDownCnt( id, ddate,cnt)
primary key (id,ddate)

然后每次下载的时候
insert into tabDownCnt
values (1,curdate(),1)
on duplicate update cnt=cnt+1;
ACMAIN_CHM 2009-11-09
  • 打赏
  • 举报
回复
[Quote]如果设置成

id download_date
1 20091109
那么每下载一次就要往数据库中插入一次,一天100多w的下载次数的话mysql负荷太大了[/Quote]

建议使用这种方法,你可以一天清理一次
100W次 insert 和 100W次UPDATE对MYSQL来说差不多。

每天夜里把当天的做个汇总。然后删除昨天的记录。
阿_布 2009-11-09
  • 打赏
  • 举报
回复
那就另外建一个下载统计的表吧!每下载一次就执行一次插入语句,如果是当天第一次下载的话是插入,如果不是第一次下载就更新。


mysql> create table test(
-> id int not null primary key auto_increment,
-> ddate date unique,
-> dnum int);
Query OK, 0 rows affected (0.09 sec)

mysql> insert into test values(null,'2009-11-01',39),(null,'2009-11-05',80),
-> (null,now(),14);
Query OK, 3 rows affected, 1 warning (0.05 sec)
Records: 3 Duplicates: 0 Warnings: 1

mysql> insert into test values(null,now(),1)
-> on duplicate key update dnum=dnum+1;
Query OK, 2 rows affected, 1 warning (0.42 sec)

mysql> select * from test;
+----+------------+------+
| id | ddate | dnum |
+----+------------+------+
| 1 | 2009-11-01 | 39 |
| 2 | 2009-11-05 | 80 |
| 3 | 2009-11-09 | 15 |
+----+------------+------+
3 rows in set (0.00 sec)

advancejar 2009-11-09
  • 打赏
  • 举报
回复
to:luoyoumou
你这样没法实现统计的呀,一天无论下载多少只能统计出一次,我想下载一次统计数+1

如果设置成

id download_date
1 20091109
那么每下载一次就要往数据库中插入一次,一天100多w的下载次数的话mysql负荷太大了
luoyoumou 2009-11-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 advancejar 的回复:]
引用 4 楼 luoyoumou 的回复:
引用 3 楼 luoyoumou 的回复:
SQL code---是指计算下载量,对吧?
---加个日期字段(download_date) 就可以了啊,
---然后根据日期字段出查询数据啊select id, 下载地址, 名称,count(casewhen (TO_DAYS(NOW())-TO_DAYS(download_date))=0then1else0)as 今日下载,count(casewhen (TO_DAYS(NOW())-TO_DAYS(download_date))=1then1else0)as 昨日下载,count(casewhen (TO_DAYS(NOW())-TO_DAYS(download_date))=7then1else0)as 本周下载from tb1groupby id, 下载地址, 名称;


---为download_date设置一个默认值,插入数据时,download_date字段:取默认当前系统的日期!


你的意思是否是这样的?
tab1
id        下载地址        名称  download_date
1          aaa.rar      x1    20091109
2          bbb.rar      x2    20091108

我原本的想法是今日,昨日,本周,本月……下载量的积累。不是何时下载的,对不起是我说的不清楚
[/Quote]

--统计数量的查询语句已经在三楼写出来了
advancejar 2009-11-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 luoyoumou 的回复:]
引用 3 楼 luoyoumou 的回复:
SQL code---是指计算下载量,对吧?
---加个日期字段(download_date) 就可以了啊,
---然后根据日期字段出查询数据啊select id, 下载地址, 名称,count(casewhen (TO_DAYS(NOW())-TO_DAYS(download_date))=0then1else0)as 今日下载,count(casewhen (TO_DAYS(NOW())-TO_DAYS(download_date))=1then1else0)as 昨日下载,count(casewhen (TO_DAYS(NOW())-TO_DAYS(download_date))=7then1else0)as 本周下载from tb1groupby id, 下载地址, 名称;





---为download_date设置一个默认值,插入数据时,download_date字段:取默认当前系统的日期!
[/Quote]

你的意思是否是这样的?
tab1
id 下载地址 名称 download_date
1 aaa.rar x1 20091109
2 bbb.rar x2 20091108

我原本的想法是今日,昨日,本周,本月……下载量的积累。不是何时下载的,对不起是我说的不清楚
luoyoumou 2009-11-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 luoyoumou 的回复:]
SQL code---是指计算下载量,对吧?
---加个日期字段(download_date) 就可以了啊,
---然后根据日期字段出查询数据啊select id, 下载地址, 名称,count(casewhen (TO_DAYS(NOW())-TO_DAYS(download_date))=0then1else0)as 今日下载,count(casewhen (TO_DAYS(NOW())-TO_DAYS(download_date))=1then1else0)as 昨日下载,count(casewhen (TO_DAYS(NOW())-TO_DAYS(download_date))=7then1else0)as 本周下载from tb1groupby id, 下载地址, 名称;


[/Quote]


---为download_date设置一个默认值,插入数据时,download_date字段:取默认当前系统的日期!
luoyoumou 2009-11-09
  • 打赏
  • 举报
回复
---是指计算下载量,对吧?
---加个日期字段(download_date) 就可以了啊,
---然后根据日期字段出查询数据啊

select id, 下载地址, 名称,
count(case when (TO_DAYS(NOW())-TO_DAYS(download_date))=0 then 1 else 0) as 今日下载,
count(case when (TO_DAYS(NOW())-TO_DAYS(download_date))=1 then 1 else 0) as 昨日下载,
count(case when (TO_DAYS(NOW())-TO_DAYS(download_date))=7 then 1 else 0) as 本周下载
from tb1
group by id, 下载地址, 名称;


advancejar 2009-11-09
  • 打赏
  • 举报
回复
这些是下载了tab1中的资源后的统计,

tab1
id 下载地址 名称
1 aaa.rar x1
2 bbb.rar x2

比如今日有多少人下载了tab1中的aaa。rar,昨天有多少,上周多少,本月多少~~~
ACMAIN_CHM 2009-11-09
  • 打赏
  • 举报
回复
你的 今日下载,昨日下载,本周下载 是些什么?

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧