精华内容
下载资源
问答
  • $result = Test::model()->findAll(array('select'=>'name, sum(record) as summary','group'=>'category')); 2.在model relation里声明一个聚合数据 public function relations() { 'children
    用AR方式实现:
    1.直接用findall
    $result = Test::model()->findAll(array('select'=>'name, sum(record) as summary','group'=>'category'));


    2.在model relation里声明一个聚合数据
    public function relations() {
          'childrenSum'=>array(self::STAT,'Test','pid','select'=>'sum(pid)'),

    }


    -------------------------------------------

    iya, saya juga berfikir demikian, :P

    mungkin bisa pula melalui findAllBySql() http://www.yiiframework.com/doc/api/1.1/CActiveRecord#findAllBySql-detail

    <?php
        $sql="
            SELECT
                    A.id, 
                    sum(B.price) as Total, 
                    count(B.B_id) as jumlah, 
                    max(B.price) as maks, 
                    min(B.price) as Min
            FROM 
                    A INNER JOIN B ON A.ID=B.A_ID
            ";
    
        $data = A::model()->findAllBySql($sql);
        foreach ($data as $dataItem)
        {
            echo $dataItem['id'];
            echo "Total = ".$dataItem['Total'];
            echo "Count = ".$dataItem['jumlah'];
            echo "Min = ".$dataItem['Min'];
            echo "Max = ".$dataItem['maks'];
        }
    ?>

    展开全文
  • 还记得我们以前讲过的用SUM这个...其实这是我们只要把人按性别来分组,然后还是用SUM函数来求和就可以了,关键是怎么分组呢,这就要用到mysql的group by语句了,它可以实现分组,下面看看sql语句吧:  SELECT SUM

    还记得我们以前讲过的用SUM这个mysql函数来查出数据表中所有的人的总数和吧?当然那个时候是一个整体的和,如果现在我们要查询的是男生和女生的各自的总年龄怎么查呢?查询的sql语句又该怎么写呢?其实这是我们只要把人按性别来分组,然后还是用SUM函数来求和就可以了,关键是怎么分组呢,这就要用到mysql的group by语句了,它可以实现分组,下面看看sql语句吧:

      SELECT SUM("栏目1") FROM "表格名" GROUP BY "栏目2"

    比如我们的数据库信息如下(sex中1表示男生,0表示女生):

      msg_info 表格

      name      age             sex

      Los          20             1

      San         25              0

      Lan         30           0

           Bos         23              1

      mini            28                1

      于是我们我们的sql语句就形成了:

      SELECT sex,sum(age) FROM `msg_info` group by sex

      结果:

        sex            sum(age)  

         0       55

         1       71

    展开全文
  • 总表 统计函数 NULL是否影响SUM AVG的计算? MAX MIN 在日期时间上会怎么样 这些函数在字符串上会怎么样 结合上节文章案例 统计一波

    MySQL学习专栏 正在持续更新中:)

    总表 统计函数

    名称 英文 中文 返回值
    COUNT() count 计数 统计指定列不为NULL的记录行数
    MAX() maxium 最大值 计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算
    MIN() minium 最小值 计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算
    SUM() summary 求和 计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0
    AVG() average 平均值 计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0

    NULL是否影响SUM AVG的计算?

    不影响,SUM AVG内部实现了COUNT的功能。

    MAX MIN 用在日期时间上会怎么样

    会将时间离得更近的认为更大(因为数值大)

    这些函数用在字符串上会怎么样

    除了COUNT(),当然一般是不推荐的。
    硬要说的话,
    SUM AVG得凉,硬要放进去 就会返回没有意义的值如 0。
    MIN MAX 会采用字符串排序 (STRCMP())

    结合上节文章案例 统计一波

    上期文章传送门:数据库学习之MySQL (十)—— 日期和时间函数 流程控制函数
    在这里插入图片描述
    上面表格的数据,统计后的结果如下:
    在这里插入图片描述

    USE data1;
    SELECT 
      MAX(`hiredate`) 最近入职时间,
      MIN(`hiredate`) 最老入职时间,
      SUM(`salary`) 最终工资总数,
      AVG(`salary`) 最终工资总数平均,
      CASE
        WHEN YEAR(`hiredate`) < 1996 
        THEN `salary` * (1+0.6+IFNULL(`commission_pct`, 0)) 
        WHEN YEAR(`hiredate`) BETWEEN 1997 AND 2000 
        THEN `salary` * (1+0.4+IFNULL(`commission_pct`, 0)) 
        WHEN YEAR(`hiredate`) BETWEEN 2001 AND 2010 
        THEN `salary` * (1+0.2+IFNULL(`commission_pct`, 0))
        WHEN YEAR(`hiredate`) BETWEEN 2011 AND 2014 
        THEN `salary` * (1+0.1+IFNULL(`commission_pct`, 0))
        ELSE `salary` * (1+0.0+IFNULL(`commission_pct`, 0))
      END AS 最终工资 
    FROM
      employees 
    ORDER BY 最终工资 DESC ;
    
    
    

    DISTINCT 关键字的应用

    案例 我们想知道奖金率有多少种,而且具体每种的值是什么?
    第一要去NULL 第二 去重 第三 最好来个降序排序查询
    在这里插入图片描述在这里插入图片描述

    SELECT
      DISTINCT IFNULL(`commission_pct`, 0) 奖金率种类
    FROM employees
    ORDER BY 奖金率种类 DESC;
    
    SELECT
      COUNT(DISTINCT `commission_pct`) 奖金率种数
    FROM employees;
    

    COUNT 花式应用

    最主要的就是用来统计类的实例数量(有多少行),当然要求你实例的属性(列对应得值)至少得有个不为NULL(全是NULL 实例不存在了)
    于是我们可以这么写
    SELECT COUNT(*) FROM employees;
    这种写法无论是MySQL 5.5之前的存储引擎MYISAM 还是5.5之后的INNODB 都是最快、效率最高的统计行数办法。
    当然你也可以这么写:
    SELECT COUNT('杰伦') FROM employees;
    或者
    SELECT COUNT(1234) FROM employees;
    结果相同,它实现原理是每一行都多一个属性,叫1234 或者 ‘杰伦’ (你自定义的),然后统计有多少个1234或者’杰伦’ 达到一样的行数统计效果。

    预告

    其实单纯的统计函数意义不大——我们不太可能针对一张张表来统计
    经常是对id = 1,2,3…的所有情况统计
    这时 我们就需要分组 GROUP BY

    下一站:数据库学习之MySQL (十二)—— 分组查询 GROUP BY + HAVING

    展开全文
  • 请大家帮忙分析一下下面...<strong>Oracle数据库应该怎么创建索引。我们使用的Oracle版本为:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production。 我们有一张表TABLE_DATA,表结构如下: ...
  • 动态SQL. --动态sql语句基本语法 SQL code 1 :普通SQL语句可以Exec执行 ...eg: Select * from tableName ...2:字段名,表名,数据库名之类作为变量时,必须动态SQL eg: declare @

    用动态SQL.
    --动态sql语句基本语法
    SQL code 1 :普通SQL语句可以用Exec执行 eg: Select * from tableName Exec('select * from tableName') Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL eg: declare @fname varchar(20) set @fname = 'FiledName' Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。 Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格 当然将字符串改成变量的形式也可 declare @fname varchar(20) set @fname = 'FiledName' --设置字段名 declare @s varchar(1000) set @s = 'select ' + @fname + ' from tableName' Exec(@s) -- 成功 exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000) set @s = 'select ' + @fname + ' from tableName' Exec(@s) -- 成功 exec sp_executesql @s -- 此句正确 3. 输出参数 declare @num int, @sqls nvarchar(4000) set @sqls='select count(*) from tableName' exec(@sqls) --如何将exec执行结果放入变量中? declare @num int, @sqls nvarchar(4000) set @sqls='select @a=count(*) from tableName ' exec sp_executesql @sqls,N'@a int output',@num output select @num

     

    展开全文
  • 我上网查过一些教程,好像是我连接数据库的时候有问题,之前用OdbcDataAdapter可以连接到数据库并读取到里面的数据,但是不太明白怎么用数据集去更新数据库里的数据,所以想直接用sql语句操作数据库,或者有其他办法...
  • 数据库数据百万条,直接用sum对一个字段求和很慢,需要6秒,该怎么优化
  • 问题:遍历list累加方式和sum()函数取相同的数据,居然数据不一样? 数据库的两条数据分别是9位精度的: 程序中: List累加方式得到的结果:308.059 sum()函数方式得到的结果ddd=308.058999999 这下好了,...
  • 数据库有百万条数据,直接sql的sum求和很慢,需要6秒,该怎么优化提高速度
  • mysql数据库中group by语句的简单介绍

    千次阅读 2010-10-29 20:46:00
    摘要: mysql数据库中group by语句的简单介绍,还记得我们以前讲过的用SUM这个mysql函数来查出数据表中所有的人的总数和吧?当然那个时候是一个整体的和,如果现在我们要查询的是男生和女生的各自的 还...
  • JAP 对外提供标准接口,业务端只需要按需实现 JAP 的接口即可,这种设计能在最大程度上增加它的灵活性,使它不受限于某一具体的数据库实现方案。 ❔ JAP 可以用到企业级项目吗? 当然,JAP 的价值就在于:方便...
  • 遇到了这样的一个难题,因为在SQL2000中,用来存时间的字段,我原先的是CHAR类型,比较方便录入和提出显示,现在到统计时就无法进行统计了,再说,SQL语句也没有直接对时间进行统计的语句,像AVG和SUM只能对实数类型,不能...
  • 表1 ID 姓名 性别 1 张三 男 2 李四 女 3 王五 男 表2 ID 姓名 工时 ...SQL语句,怎么操作? select 姓名,sum(工时) from 表2 lift join 表1 on 表2 表2.姓名=姓1.姓名 group by 姓名,性别
  • 以优雅的方式在sqlite数据库中创建自定义SQL函数

    千次阅读 热门讨论 2008-03-16 02:19:00
    这里说的SQL函数,是指可在SQL语句中使用的函数,如常见的 count(), sum(), avg(), min(), max() 等。...Scalar 和 Aggregate 实在不太清楚该怎么翻译,而其含义,也难于言语表达,大概属于只可意会不可
  • 现在有一下场景,根据一个accountId,会查询出很多的clientId,然后对每个clientId进行统计(比如sum,avg。。。group by)。这样就导致我一条SQL 语句不满足需求;我现在是这样做的,先根据accountId查出需要的...
  • SQL server int型的字段sum时溢出

    千次阅读 2011-07-08 10:40:12
    在SQL 中 int 型的最大值 2147483647 ,但是我在数据库中查询求和时 既然出现了溢出,请问怎么解决int 型溢出的问题!! ===============================================bigintsum(cast(col1 as
  • 怎么使用php数据分页

    2020-04-03 16:34:28
    首先是查询符合条件的数据库字段,通过获取一共有多少条数据,也可以说长度是多少,然后通过limit(位置,显示多少行)这个位置应该是动态变化的是需要传入变量,也就是页数,首先把字段定为sum,然后行数为han 页数为...
  • 已经连接上了数据库,可以执行查询语句,就是不知道该什么方式把整个语句查询语句结果传递到显示结果的页面并且以表格的形式展现出来 String all="select sum(iNumb) as iNumbHj,sum (rMoney) as rMoneyHj from ...
  • [code="java"]数据库的表如附件(oracle.jpg): 现在要根据 state 值 统计每个月的 sum_num ,sum_money 的值的和 java类来写 ,sql语句查出数据集合 最后显示的结果如(html.jpg) 怎么能够实现[/code]
  • 如果没有这些用户根本不知道怎么用你设计的这个系统。在设计的调试过程中也无法顺利的完成调试工作。有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺利。 予我耐心解答的老师和同学,是他们为我...
  • 前言 金九银十也要结束了,很多小伙伴在末尾也在抓紧冲刺,小编也赶在结尾跟水友们整理了字节的面经。... mysql sum这个功能是数据库做的还是数据库引擎 Redis 哈希 容量变换时怎么移动数据 My..
  • 怎么用这个数据库,最简单的就是在图形化工具比如Navicat里执行这个文件 #二、分组函数 /* 功能:用作统计使用,又称为聚合函数或统计函数或组函数 分类: sum 求和、avg 平均值、max 最大值 、min 最小值 、count...
  • ├─common:统一错误码(实际并没有怎么用) ├─config:统一项目配置(数据库,oss,mq,redis,监听地址等) ├─db:提供数据库(dao层)支持,包括创建连接池,提供crud接口 │└─mysql ├─doc:项目...
  • mysql学习总结

    2012-08-23 17:19:14
    1. 如果sum的字段为空则设置为0 一般出现转换不过来是因为,数据库的默认值没有写,特别是数字。 ...2.SELECT * FROM `site_verify_data` WHERE ...int的长度不管怎么设置int(1)和int(11)都没有范围的都是0到2...
  • **智能面试

    2020-12-15 17:16:06
    笔试 1.智力题 2.5升6升水壶装3升水 3.深拷贝浅拷贝,String怎么实现的 4.jvm内存模型,给了一条指令让说什么意思(忘了) 5.手写单例模式 6.Linux 内核io种类 ...2.说一下集合体系,你平时怎么用hashmap 3.说一下项
  • 原来数据库sql sever,下面的语句能正确查询出来相关记录。 adoquery4.close; adoquery4.SQL.Clear; adoquery4.SQL.Add('select 学号,姓名, sum(次数) as 剩余课时数 from '); adoquery4.SQL.Add('...
  • orcale常用命令

    2009-08-04 00:34:59
    当不能关闭数据库时,可以startup force来完成数据库的关闭 先关闭数据库,再执行正常启动数据库命令 7、startup pfile=参数文件名 带初始化参数文件的启动方式 先读取参数文件,再按参数文件中的设置启动数据库...
  • MySQL 阶段总结

    2020-12-31 09:17:49
    你知道数据库连接查询吗? 我了解到的连接查询有内连接和外连接,外连接分左外、右外、全外连接三种。我一般使用左外连接,就是左表全部显示,右表显示匹配的数据;内连接也过,就是只显示两边匹配的数据。 聚合...
  • 分组函数不能出现在where后面,Max min sum count avg这些都是分组函数 Having分组过后再次进行筛选,用法和where一样,但是可以出现分组函数。Having通常出现在group后面,如果在select后面则效果和where一样。 在...

空空如也

空空如也

1 2 3
收藏数 49
精华内容 19
关键字:

数据库sum怎么用