加班加的累了 给你解决一下假设 你的数据库 有一个sex 字段表示‘男’或者‘女’, 表为 tabselect (case sex when '男' then select count(1) from tab end) 男生总数,(case sex when '女' then select count(1) from tab end) 女生总数from tab
Excel函数共包含11类,分别是数据库函数、日期与时间函数、工程函数、财务函数、信息函数、逻辑函数、查询和引用函数、数学和三角函数、统计函数、文本函数以及用户自定义函数。
1、数据库函数
当需要分析数据清单中的数值是否符合特定条件时,使用数据库工作表函数。例如,在一个包含销售信息的数据清单中,可以计算出所有销售数值大于1000且小于2500的行或记录的总数。
2、日期与时间函数
在公式中用来分析和处理日期值和时间值的函数。比如,DATE函数表示返回代表特定日期的系列数;DATEDIF函数表示计算两个日期之间的天数、月数或年数。
3、工程函数
用工程工作表函数用于工程分析。可分为三种类型:对复数进行处理的函数、在不同的数字系统间进行数值转换的函数、在不同的度量系统中进行数值转换的函数。
4、信息函数
用于编程语言中的函数。常用函数有:求和函数SUM、平均值函数AVERAGE、逻辑函数IF、快捷方式或链接创建函数HYPERLINK、计数函数COUNT等等。
5、逻辑函数
返回值为逻辑值true或逻辑值false的函数。true代表判断后的结果是真的,正确的,也可以用1表示;false代表判断后的结果是假的,错误的,也可以用0表示。
6、查询与引用函数
当需要在数据清单或表格中查找特定数值,或者需要查找某一单元格的引用时,可以使用该函数查询和引用工作表。
例如,如果需要在表格中查找与第一列中的值相匹配的数值,可以使用VLOOKUP工作表函数;如果需要确定数据清单中数值的位置,可以使用MATCH工作表函数。
Eval方法实际上是TemplateControl的,而SystemWebUIPage和SystemWebUIUserControl都继承于TemplateControl,所以我们可以在Page和UserControl上直接调用个方法。
PageEval方法可以帮助我们更好的撰写数据绑定表达式,在ASPNET 1x时代,数据绑定表达式的一般形式是:
%# DataBinderEval( Container , “DataItemName”) %
而在ASPNET 20中,同样的代码,我们可以这样写:
%# Eval( “Name” )%
ASPNET 20是怎么实现的呢?我们先从Eval方法来研究,通过反射NET Framework 20类库的源代码,我们可以看到这个方法是这样实现的:
protected internal object Eval(string expression)
{
thisCheckPageExists();
return DataBinderEval(thisPageGetDataItem(), expression);
}
第一行我们不必管,这是检查调用的时候有没有Page对象的,如果没有则会抛出一个异常。
关键是第二行:
return DataBinderEval(thisPageGetDataItem(), expression);
PageGetDataItem()也是20中新增的一个方法,用途是正是取代ASPNET 1x中的ContainerDataItem。
看来不摸清楚GetDataItem()方法,我们也很难明白Eval的原理。GetDataItem的实现也很简单:
public object GetDataItem()
{
if ((this_dataBindingContext == null) (this_dataBindingContextCount == 0))
{
throw new InvalidOperationException(SRGetString(“"Page_MissingDataBindingContext“"));
}
return this_dataBindingContextPeek();
}
我们注意到了有一个内部对象_dataBindingContext,通过查源代码发现这是一个Stack类型的东西。所以他有Peek方法。而这一段代码很容易看懂,先判断这个Stack是否被实例化,然后,判断这个Stack里面是不是有任何元素,如果Stack没有被实例化或者没有元素则抛出一个异常。最后是将这个堆栈顶部的元素返回。
ASPNET 20用了一个Stack来保存所谓的DataItem,我们很快就查到了为这个堆栈压元素和d出元素的方法:ControlDataBind方法:
protected virtual void DataBind(bool raiseOnDataBinding)
{
bool flag1 = false;//这个标志的用处在上下文中很容易推出来,如果有DataItem压栈,则在后面出栈。
if (thisIsBindingContainer)//判断控件是不是数据绑定容器,实际上就是判断控件类是不是实现了INamingContainer
{
bool flag2;
object obj1 = DataBinderGetDataItem(this, out flag2);//这个方法是判断控件是不是有DataItem属性,并把它取出来。
if (flag2 && (thisPage != null))//如果控件有DataItem
{
thisPagePushDataBindingContext(obj1);//把DataItem压栈,PushDataBindingContext就是调用_dataBindingContext的Push方法
flag1 = true;
}
}
try
{
if (raiseOnDataBinding)//这里是判断是不是触发DataBinding事件的。
{
thisOnDataBinding(EventArgsEmpty);
}
thisDataBindChildren();//对子控件进行数据绑定,如果这个控件有DataItem,则上面会将DataItem压入栈顶,这样,在子控件里面调用Eval或者GetDataItem方法,就会把刚刚压进去的DataItem给取出来。
}
finally
{
if (flag1)//如果刚才有压栈,则现在d出来。
{
thisPagePopDataBindingContext();//PopDataBindingContext就是调用_dataBindingContext的Pop方法
}
}
}
以上就是关于在一个数据库学生表中,要分别统计男女生人数,用count()函数怎么实现啊全部的内容,包括:在一个数据库学生表中,要分别统计男女生人数,用count()函数怎么实现啊、在Excel中一共包含11大类的内置函数请举出其中的5例、大家知道asp.net那个读取数据库表字段的函数eval是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)