问个数据统计的小问题~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

不懂装懂 2010-08-26 02:57:10
我现在要对数据库内的很多的字段进行数据统计,

例如ID、实际充值总合、实际消费总合、活动赠金总合、活动赠金消费总合等等

涉及到库中的表只有一个消费表(表结构不可变)记录每笔进出金额。

其中有一个字段记录用户是消费还是充值,例如flag1=0充值=1消费

还有一个字段记录方式,例如flag2=0同时flag1=0时,表示充值实际消费

方法有两种

一:我从消费表一次性取出所有数据,如ID=1的消费记录,然后对数据筛选(筛选时不涉及到数据库操作了)

二:使用sql语句传入不同的查询条件,分别对各个字段求和,每次都要操作数据库

其中哪种方法好呢???

如果有更好的方法,指点下小弟,谢谢~~~
...全文
179 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
不懂装懂 2010-08-27
  • 打赏
  • 举报
回复
再顶一下
从15#进另一帖子
不懂装懂 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 computerfox 的回复:]
建议用第三种方法!

在数据库中建立存储过程,调用存储过程时,传入参数,这样的速度,比直接执行sql语句要快!
[/Quote]
哈哈 ,阿捷老大
看这里,看这里
捷哥1999 2010-08-27
  • 打赏
  • 举报
回复
建议用第三种方法!

在数据库中建立存储过程,调用存储过程时,传入参数,这样的速度,比直接执行sql语句要快!
porschev 2010-08-27
  • 打赏
  • 举报
回复
第二种方式要快。。。
不懂装懂 2010-08-27
  • 打赏
  • 举报
回复
顶起
不懂装懂 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 q107770540 的回复:]
将你的表结构
表内示例数据及想要的结果帖一下
最好发到SQL版块去
很快就应该可以得到参考答案
[/Quote]
老大帮忙看看吧
q107770540 2010-08-27
  • 打赏
  • 举报
回复
将你的表结构
表内示例数据及想要的结果帖一下
最好发到SQL版块去
很快就应该可以得到参考答案
不懂装懂 2010-08-27
  • 打赏
  • 举报
回复
4楼妹的回复咋没了???
不懂装懂 2010-08-26
  • 打赏
  • 举报
回复
再顶下
ps:
一共涉及消费记录表、用户表、单据表
如果用第一种方法打开数据库3次
第二种不用存储过程的话大概在12次左右
我统计了一下,按ID看消费表里面的数据,如果一次性取出,累计最多的只有一条100+,其余大概不到10个ID在40-50条记录之间,剩下的都在10条左右,这种情况用两种方法差别大吗?
另外orcl在哪里建存储过程=。=!!
不懂装懂 2010-08-26
  • 打赏
  • 举报
回复
顶一下
不懂装懂 2010-08-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 peter200694013 的回复:]
C#中使用SQL存储过程说明

上班中...
[/Quote]
再问以下,我统计了一下,按ID看消费表里面的数据,如果一次性取出,累计最多的只有一条100+,其余大概不到10个ID在40-50条记录之间,剩下的都在10条左右,这种情况用两种方法差别大吗?
Peter200694013 2010-08-26
  • 打赏
  • 举报
回复
不懂装懂 2010-08-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 peter200694013 的回复:]
第二种方式

比较快,不用“再”筛选
[/Quote]
帮忙按我那例子,简单写个存储过程,谢谢
Peter200694013 2010-08-26
  • 打赏
  • 举报
回复
第二种方式

比较快,不用“再”筛选
不懂装懂 2010-08-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hededong 的回复:]
如果数据量不是很大的话第一种方法可以采取、如果数据量大的话第一种效率会低。
第二种方法其实可以写一个存储过程、等操作完了返回数据、完全不用每次都操作数据库的。
[/Quote]
谢谢,哎。。。不会写存储过程,先去看看
hededong 2010-08-26
  • 打赏
  • 举报
回复
如果数据量不是很大的话第一种方法可以采取、如果数据量大的话第一种效率会低。
第二种方法其实可以写一个存储过程、等操作完了返回数据、完全不用每次都操作数据库的。
大象种群的管理 摘要 一家大型自然公园散养了大约11000头大象,为了给大象创造一个健康的生存环境,需要将大象的总数控制在11000头左右。本文通过一系列的研究,算出了大象的存活率,推测了大象的年龄结构,提出了大象的总数的控制方案。 第一问:通过过去两年运走的大象数目,根据随机抽样的规律知,抽样大象的数目反应了大象当前的年龄结构(详见问题一中的年龄结构图表),再用分组求平均值的方法测出大象2~60岁的存活率为:98.14%,之后的存活率线性递减,到70岁之后存活率为0. 第二问:本题中通过leslie模型,对大避孕针后新的有效生育率进行求解,进而得出每年需要避孕的大象头数。而其中又讨论了三种情况: (1)不考虑重复避孕的母象头数,直接对13~60岁间的大象避孕,所需避孕的头数为1143。(2)不考虑重复避孕的母象头数,大避孕针可能打到所有的年龄段,此时得出需要避孕的大象增多,为1757头。(3)考虑重复避孕的情况,整个年龄段都可以打避孕药,则每年需要避孕2195头大象。 第三问:如果考虑每年可以迁出50~300头大象,此处我们有两种理解,建立了两个模型: (1)每年大象的头数稳定增加,增长率为0.004545~0.02727,然后在每年的年末移出50~300头大象,这样就可以控制大象的头数稳定在11000头,根据leslie模型,这样就可以算出特征值为1.004545~1.02727,根据特征值求出此时避孕后的有效生育率为0.0609~0.1224,若不考虑重复避孕,可得每年需避孕13~60岁间的大象217~1009头,亦可以避孕所有年龄大象中的425~1593头;如果考虑重复避孕,则:可得每年需避孕所有年龄大象中的443~1933头。 (2)考虑leslie模型的特征值是一定的,为1,但其存活率因为大象的移走而不断变化,对此分析考虑,所得结果具体见论文中表格。 第四问:研究可得,因为避孕使得种群年龄结构老龄化,导致种群的稳定性减弱。假如出现疾病或者失控的偷猎,使大象总数突然大幅度下降,即使停止避孕,总数恢复到期望值也需要很长时间,并且会对大象群的种群结构产生很大影响,对于恢复存在不良影响。 最后,对所设立的方案模型通过蒙特卡罗随机模拟法进行计算机模拟,验证以上计算的理论结果,模拟结果表明,结果是合理的。 问题背景: 一家大型自然公园散养了大约11000头大象,管理部门希望为大象创造一个健康的生存环境,将大象的总数控制在11000头左右。每年,公园的管理人员都要统计当年大象的总数。 过去20年里,公园每年都要移去一些大象,以便保持大象总数维持在11000头左右,通常都是采用捕杀或者迁移的方法来实现的。统计表明,每年约处理600-800头大象。 近年来,公众强烈反对捕杀大象行为,而且即使是迁移少量的大象也是不允许的。但是一种新的给大象打避孕针的方法也被研制成功。一只成年母象打了避孕针后,两年内不再怀孕。 1 建立并利用模型推算2-60岁大象可能的存活率,以及目前的大象年龄结构. 2估计每年需要避孕多少大象,才能保证大象总数控制在11000头左右,说明数据不确定性对你的结论的影响。 3假设每年可以移出50-300头大象,避孕大象数可以减少多少。 4有一些反对观点认为,假如出现疾病或者失控的偷猎,使大象总数突然大幅度下降,即使停止避孕,也会对大象群的恢复存在不良影响,研究并回答这个问题. 模型假设: 1几乎没有大象迁入或迁出; 2性别比接近1:1,采取控制后,也维持这个比例; 3初生象的性别比也是大约1:1; 4母象初次怀孕大约在10-12岁,一直到60岁大约每3.5年怀胎一次,60岁后不再受孕,怀孕期为22个月,可以假设母象均在11岁怀孕,且从13岁开始生出小象。 5取按年循坏的方案; 6避孕针对母象没有副作用,打了避孕针的母象2年内不再受孕; 7假设初生象存活到1岁的比例为75%,此后,直至60岁前,存活率都比较均匀,大约在95%以上, 大象一般只活到70岁,设其在60~70之间的存活率线性递减,而70岁往后的死亡率为100%。 8公园里不存在捕杀行为,偷猎可以不考虑。 符号说明: 1、 :第i年龄组母象个体在1个时段内平均繁殖的数量。 2、 :第i年龄组母象个体在1个时段内的存活率。 3、 L : leslie 矩阵。 4、 n: 移出大象的头数。 5、 r : 特征值。 6、 q1: 母象的总数。 7、 为岁数为t的大象在第i年时的个数 问题一 建立并利用模型推算2-60岁大象可能的存活率,以及目前的大象年龄结构. 模型1: 过去两年迁出的大象时从随机抽样中来的,所以它的结构可以反应向群总体的年龄结构。 将过去两年迁移出的总的大象的数目两个向量表示如下 X1=[103 77 71 …… 0 2] X2=[98 74 69……0 0] 令x为x1与x2的和(或平均值,效果一样) X=X1+X2 则x的结构即可以表示目前的大象年龄结构。将x中各值的范围控制在合理的范围内利于输出观察,令y0=x/norm(x,1);利用matlab显示其年龄结构即为: a=0:70; bar(a,y0,'stacked'); 则年龄结构如图所示:

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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