NHibernate说探——聚合函数

简介: 这里以Northwind数据库为示例数据库 示例数据表:Products 现在只用产品表中部分字段。 持久类如下: public class Products     {         public virtual int ProductID { get; set; }       ...

这里以Northwind数据库为示例数据库

示例数据表:Products

现在只用产品表中部分字段。

持久类如下:

public class Products

    {

        public virtual int ProductID { get; set; }

        public virtual string ProductName { get; set; }

        public virtual int CategoryID { get; set; }

        public virtual float Price { get; set; }

    }

 

映射文件如下:

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Domain" namespace="Domain.Entities">

  <class name="Products" table="Products">

    <id name="ProductID" column="ProductID">

      <generator class="identity"></generator>

    </id>

    <property name="ProductName" column="ProductName" type="String"></property>

    <property name="CategoryID" column="CategoryID" type="Int32"></property>

    <property name="Price" column="UnitPrice" type="Single"></property>

  </class>

</hibernate-mapping>

开始

(一)Avg(平均值)

IQuery q = _session.CreateQuery("select avg(Price) from Products where CategoryID=2");

        return Convert.ToSingle(q.List()[0]);

        查询类型为2的所有产品的平均售价

        ·对于平均值来说,结果是一个,但返回的还是一个集合。

(二)Max(最大的)

IQuery q = _session.CreateQuery("select max(Price) from Products");

        return Convert.ToSingle(q.List()[0]);

查询最大的价格

(三)Min(最小的)

IQuery q = _session.CreateQuery("select min(Price) from Products");

return Convert.ToSingle(q.List()[0]);

查询最低的价格

(四)Count

IQuery q = _session.CreateQuery("select count(*) from Products");

return Convert.ToSingle(q.List()[0]);

查询总数

这里穿插一下distinct用法。

采上Employees

查询城市数目:

IQuery q = _session.CreateQuery("select count(City) from Employees");

return Convert.ToSingle(q.List()[0]);

查询不重复的城市数目

       IQuery q = _session.CreateQuery("select count(distinct City) from Employees");

(五)Sum(求和)

IQuery q = _session.CreateQuery("select sum(Price) from Products where CategoryID=2");

return Convert.ToSingle(q.List()[0]);

求和类别为2的产品的总价格

Order by

(六)Order by

(1) 单属性排序

IQuery q = _session.CreateQuery("select Price from Products p order by Price");

        return q.List<float>();

(2)  多属性排序

IQuery q = _session.CreateQuery("select Price from Products p order by Price,ProductID desc");

    return q.List<float>();

(七)Group by

(1)单属性分组

IQuery q = _session.CreateQuery("select CategoryID from Products group by CategoryID");

return q.List<int>();

 

以产品类别分组,这里要注意的是返回的类型。在上一篇中我说明了这里的理解方式。

(2)多属性分组及聚合

IQuery q = _session.CreateQuery("select CategoryID,count(*) from Products group by CategoryID");

return q.List<object[]>() as List<object[]>;

这里以产品类别分组,并取得每个类别的数目。这里得到的是一个多对象多属性集合。可以得到一个object数据组的泛型集合。对于这种类型的转化,在上一篇中已经说明。

(3)Having属性

IQuery q = _session.CreateQuery("select CategoryID,count(*) from Products group by CategoryID having count(*)>10");

     return q.List<object[]>() as List<object[]>;

这里以产品类别分组,并取得每个类别的数目,且类别产品数目在10个以上的保留。

这是HQL查询,是支持having子句的。

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

目录
相关文章
|
Serverless C语言 C++
【数学建模】利用C语言来实现 太阳赤纬 太阳高度角 太阳方位角 计算和求解分析 树木树冠阴影面积与种植间距的编程计算分析研究
【数学建模】利用C语言来实现 太阳赤纬 太阳高度角 太阳方位角 计算和求解分析 树木树冠阴影面积与种植间距的编程计算分析研究
575 1
|
SQL 数据安全/隐私保护
阿里云服务器怎么搭建sql server(即 MS SQL)?
本文从远程桌面连接,到SQL SERVER安装进行了系统介绍。购买前请先:领取阿里云幸运券,有很多优惠,下文中有领取链接。 购买建议多买几年,年数越多优惠越多。
10165 82
|
前端开发
HTML与CSS实现网页的超链接及美化
HTML与CSS实现网页的超链接及美化
350 0
HTML与CSS实现网页的超链接及美化
|
数据安全/隐私保护
推荐一款中小企事业单位都能用的免费OA系统
在数字化办公时代,选择合适的免费OA办公系统对于提高工作效率和管理水平至关重要。在众多免费OA办公系统中,点晴免费OA办公系统深受中小企事业单位,其功能全面、易用性好,能够满足企业的日常办公需求。
389 6
|
JSON 人工智能 API
App Inventor 2 人脸识别App开发 - 第三方API接入的通用方法
**App 效果图**:展示人脸识别功能,可识别性别和年龄。 **工作原理**:调用第三方人脸识别API,上传图片并接收返回的JSON数据,AppInventor2解析结果显示。
402 0
|
存储 Java UED
Spring Boot中的国际化处理
Spring Boot中的国际化处理
|
SQL 安全 网络安全
数字堡垒之下:网络安全与信息防护的现代策略
【8月更文挑战第13天】 在数字化时代的浪潮中,网络安全和信息安全成为维护个人隐私和企业资产的关键防线。本文将深入探讨网络安全漏洞的成因、加密技术的重要性以及提升全民安全意识的必要性,旨在为读者提供一个关于如何在日益复杂的网络环境中保护自己的全景视图。
|
人工智能 自然语言处理 搜索推荐
营销大模型应用落地,AI广告投手「归一妙计」重新定义营销可能性
归一智能基于「利欧归一」营销领域大模型,训练出了适配各媒体平台投放工作流的AI Agent「归一妙计」,实现8小时内完成万词万创意万落地页。
527 0
|
调度 云计算
云计算|OpenStack|错误记录和解决方案(不定时更新)
云计算|OpenStack|错误记录和解决方案(不定时更新)
1972 0
|
存储 缓存 JavaScript
前端(八)——深入探索前端框架中的Diff算法:优化视图更新与性能提升
前端(八)——深入探索前端框架中的Diff算法:优化视图更新与性能提升
533 0