注册 登录
编程论坛 SQL Server论坛

求日报`周报`月报SQL语句.....................

Lie_li 发布于 2008-09-19 15:57, 4874 次点击


问题表:
ID---KEY---createtime---updatetime----所属作业ID
1----k1----2008/8/7-----2008/8/7------zy1
2----k2----2008/8/7-----2008/8/7------zy1
3----k3----2008/8/7-----2008/8/7------zy2
4----k4----2008/8/7-----2008/8/7------zy3


作业表:
ID---KEY---作业名称---布置者
zy1--k5----XX作业----XX老师
zy2--k6----XX作业----TT老师
zy3--k7----XX作业----QQ老师
zy4--k8----XX作业----UU老师



一个作业可有多个问题
一个老师可在多个作业布置问题

我需要取得日报`周报`月报的数据来做报表

要求2个:
指定作业名称的 问题总量 日`周`月报的量`即这个作业`每日分别有多少问题`每周多少问题`每月多少问题

布置者在指定作业中的 问题总量  日`周`月报的量`即
day(日期) month(日期) year(日期)可以取得 日`月`年........


这SQL不知该怎么写.........


先谢谢了
40 回复
#2
师妃暄2008-09-19 17:29
占位置帮你解答.我现在上班没时间,回去给你答案
---
多个老师可不可以布置同一作业?

[[it] 本帖最后由 师妃暄 于 2008-9-19 21:35 编辑 [/it]]
#3
liyanhong2008-09-19 18:37
#4
andey2008-09-20 08:45
暄暄人真好...
#5
Lie_li2008-09-22 08:43


.....

SOS  = =!
#6
卜酷塔2008-09-22 09:07
说实话我有点迷茫,不知道楼主是被那个地方难住了?
这个应该不是很难吧?
每天的日报应该可以解决吧。
周报。先计算出这一天属于那个周,然后用周的函数去比较,问题也应该不麻烦
月报。跟周报一样。
#7
Lie_li2008-09-22 09:21
补充下  `年月日都是未知的`这表只是个式样
#8
Lie_li2008-09-22 09:24
SQL......我不是很熟悉`只会些基本的查询..........拜托了


还有就是我这是通过servlet进行读取这些查询的结果,但想不到这些查询的结果该放到什么里面好。

如果是日报`需要的字段是具体每天的日期`作业名称`问题的数量

如果是月报`需要的字段是具体每月的月份`作业名称`问题的数量

如果是年报`需要的字段是具体每年的年份`作业名称`问题的数量
#9
卜酷塔2008-09-22 09:46
这个问题难倒是不难,就是挺麻烦的,每次取出日期来要先转换一下,然后在比对。如果是放在jsp中处理的话对整个系统资源也是一个挑战,我建议你写成存储过程。然后jsp中直接调用存储过程就行。

如果仅仅是统计的话就放在table里就是了。
#10
Lie_li2008-09-22 09:54
这帖主要是求SQL语句........能帮我写下吗........实在不会
#11
卜酷塔2008-09-22 09:59
晚上吧,白天不好办啊。
#12
Lie_li2008-09-22 10:11
好的  我等~~~~~

反正晚上加班
#13
Lie_li2008-09-22 17:18
各位 你们回来了吗~~~~~~~~~~~
#14
Lie_li2008-09-23 09:43
2位斑竹别放我鸽子啊~~~~~

这事很急的啊.............
#15
师妃暄2008-09-23 09:46
[bo][un]Lie_li[/un] 在 2008-9-22 09:21 的发言:[/bo]

补充下  `年月日都是未知的`这表只是个式样

#16
Lie_li2008-09-23 09:57
怎.......么了?
#17
卜酷塔2008-09-23 10:01
昨天晚上被人拉去喝酒了。回来以后就晕了,所以没有写,不好意思昂。
我现在看看昂
#18
Lie_li2008-09-23 10:02
谢谢~~
#19
Lie_li2008-09-23 10:14
要求变了,是我把问题想复杂了

是指定的作业有多少问题  分别 日 周月报

和指定的老师在指定的作业 有多少问题  分别日 周 月报
#20
卜酷塔2008-09-23 10:18
顺便问一句,你是为了做查询用吧?
#21
师妃暄2008-09-23 10:19
还有,你那俩日期字段没时间,那他们啥用....
#22
卜酷塔2008-09-23 10:24
写成有参数的存储过程,他输入个什么日期然后就给他查那个日期的就是了。
周报,日报,月报都一样。
要是楼主的意思是把数据库中的所有记录都写汇总在一张表里的话,感觉这个问题是个非常奇怪的问题也是影响数据库性能很大的问题。每次插入新数据都要从头到位遍历一边数据库的每一条记录并且还要记录到相关的表或者视图当中。如果数据库数据量小的话还好说。
#23
Lie_li2008-09-23 10:25
我要取得查询的数据 做报表
#24
卜酷塔2008-09-23 10:29
果然被我言中了。

lz你的数据库现在有多少数据,每天增加多少?
#25
Lie_li2008-09-23 10:30
数据源是不定的

所以我每次都把数据库全部清空 重新插入  这样也避免重复插入KEY的问题
#26
Lie_li2008-09-23 10:34
21楼 的意思没明白饿......

以创建的日期为基准,把他当date型吧
#27
卜酷塔2008-09-23 10:37
你是想通过sql得到最终查询出来的表么?
例如
是指定的作业有多少问题  分别 日 周月报一张表

和指定的老师在指定的作业 有多少问题  分别日 周 月报一张表
#28
Lie_li2008-09-23 10:39
如果可以那是最好了
#29
Lie_li2008-09-23 11:04
#30
卜酷塔2008-09-23 11:17
#31
Lie_li2008-09-23 11:40
...
#32
Lie_li2008-09-23 11:50
http://topic.


这是我在别处发的帖子,按4楼的代码来看可行,也达到了我要求的效果
但在我的MYSQL里CONVERT(VARCHAR(10),B.createtime,120) 这个方法不行 老是在这报错,不知道为什么

要不借鉴下?



我SQL实在不怎滴.......
#33
Lie_li2008-09-23 13:06
你们是我最后的希望了.............
#34
Lie_li2008-09-24 08:56
.................

斑竹大人..........想出来了吗
#35
卜酷塔2008-09-24 10:17
他是在sqlserver下给你写的,而你用的是mysql ,可能语法上有点不同吧。你自己纠正一下语法吧
#36
Lie_li2008-09-24 10:22
SQL 我不怎么会啊.........能改就改了

而且现在查询要求也变了

能帮我写下吗...
#37
卜酷塔2008-09-24 14:12
你吧代码贴到mysql区去吧。我不懂MYsql
#38
happynight2008-09-24 14:42
CONVERT是SQL SERVER的函数
在MYSQL中你用
DATE_FORMAT(date,format)
根据format字符串格式化date值。下列修饰符可以被用在format字符串中: %M 月名字(January……December)  
%W 星期名字(Sunday……Saturday)  
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)  
%Y 年, 数字, 4 位  
%y 年, 数字, 2 位  
%a 缩写的星期名字(Sun……Sat)  
%d 月份中的天数, 数字(00……31)  
%e 月份中的天数, 数字(0……31)  
%m 月, 数字(01……12)  
%c 月, 数字(1……12)  
%b 缩写的月份名字(Jan……Dec)  
%j 一年中的天数(001……366)  
%H 小时(00……23)  
%k 小时(0……23)  
%h 小时(01……12)  
%I 小时(01……12)  
%l 小时(1……12)  
%i 分钟, 数字(00……59)  
%r 时间,12 小时(hh:mm:ss [AP]M)  
%T 时间,24 小时(hh:mm:ss)  
%S 秒(00……59)  
%s 秒(00……59)  
%p AM或PM  
%w 一个星期中的天数(0=Sunday ……6=Saturday )  
%U 星期(0……52), 这里星期天是星期的第一天  
%u 星期(0……52), 这里星期一是星期的第一天  
%% 一个文字“%”。
#39
happynight2008-09-24 14:43
根据你的要求 应该写成

日报:
DATE_FORMAT(date,'%Y-%m-%d')
月报:
DATE_FORMAT(date,'%Y-%m')
#40
happynight2008-09-24 14:44
WEEK(date,first)  
对于星期天是一周的第一天的地方,有一个单个参数,返回date的周数,范围在0到52。2个参数形式WEEK()允许
你指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是1,
从星期一开始。
#41
happynight2008-09-24 14:45
周报
WEEK(date)

----------------------------
没办法调试 只是依葫芦画瓢 有问题见谅
1