文档章节

ThinkPHP 统计查询

ywppengpeng
 ywppengpeng
发布于 2016/11/21 13:39
字数 527
阅读 14
收藏 1
点赞 0
评论 0

统计查询

在应用中我们经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数、所有用户的最大积分、学生的平均成绩等等,ThinkPHP 为这些统计操作提供了一系列的内置方法:

  1. count():统计数据行数
  2. max():统计某个字段最大数据
  3. min():统计某个字段最小数据
  4. avg():统计某个字段平均数据
  5. sum():统计某个字段数据之和

上述统计查询方法都是独立的方法且支持连贯操作。

count()

count() 方法用于统计数据行数。

例子:

public function read(){
    $Dao = M('User');
    // 获取用户数:
    $userCount = $Dao->count();
    // 添加条件:
    $userCount2 = $Dao->where('uid > 10')->count();

    $this->assign('userCount', $userCount);
    $this->display();
}

上例中,两个查询语句实际执行的 SQL 为:

SELECT COUNT(*) AS tp_count FROM user LIMIT 1 
SELECT COUNT(*) AS tp_count FROM user WHERE uid > 10 LIMIT 1

可以在模板中直接输出得到的统计数据:

共有用户 {$userCount} 人。

max()

max() 方法用于统计某个字段最大数据。

统计用户最大积分例子:

$maxScore = $Dao->max('score');

实际执行的 SQL 为:

SELECT MAX(score) AS tp_max FROM user LIMIT 1

min()

min() 统计某个字段最小数据。

获取积分大于 0 的用户的最小积分例子:

$minScore = $Dao->where('score>0')->min('score');

实际执行的 SQL 为:

实际执行SQL:SELECT MIN(score) AS tp_min FROM user WHERE score>0 LIMIT 1

avg()

avg() 统计某个字段平均数据。

获取用户的平均积分例子:

$avgScore = $Dao->avg('score');

实际执行的 SQL 为:

SELECT AVG(score) AS tp_avg FROM user LIMIT 1

sum()

sum() 统计某个字段数据之和。

统计积分排名前 10 名用户的积分之和:

$sumScore = $Dao->order('score DESC')->limit('10')->sum('score');

实际执行的 SQL 为:

SELECT SUM(score) AS tp_sum FROM user ORDER BY score DESC LIMIT 10

所有的统计查询如 select() 方法一样。均支持连贯操作的使用,根据实际情况添加不同的查询条件。

参考阅读

  1. MySQL 统计查询》系列教程
  2. ThinkPHP Where 条件
  3. ThinkPHP 连贯操作

© 著作权归作者所有

共有 人打赏支持
ywppengpeng
粉丝 5
博文 62
码字总数 31743
作品 0
西安
程序员

暂无文章

扫码二维码跳转到某个网站

添加maven依赖 <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.0.0</version></dependency><dependency><groupId>com.goog......

gaomq
7分钟前
0
0
Windows平台下搭建Git服务器的图文教程

Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以在windows下的开发要把自己...

MKChan
13分钟前
0
0
告警系统主脚本&告警系统配置文件&告警系统监控项目

20.20 告警系统主脚本 准备工作 定义监控系统的各个目录,然后再去定义主脚本,因为是分布式的,所以需要每一台机器都需要定义,事先创建好各个脚本和各个目录,随后脚本直接拷贝过去即可,然...

影夜Linux
14分钟前
0
0
谈谈神秘的ES6——(一)初识ECMAScript

谈谈神秘的ES6——(一)初识ECMAScript 在《零基础入门JavaScript》我们就说过,ECMAScript是JavaScript的核心,是JavaScript语法和语义的解释器,同时也是一个标准。而ECMAScript标准其实也...

JandenMa
今天
1
0
第16章 Tomcat配置

16.1 Tomcat介绍 ####Tomcat介绍 LNMP架构针对的开发语言是PHP语言,php 是一门开发web程序非常流行的语言,早些年流行的是asp,在Windows平台上运行的一种编程语言,但安全性差,就网站开发...

Linux学习笔记
今天
0
0
流利阅读笔记29-20180718待学习

高等教育未来成谜,前景到底在哪里? Ray 2018-07-18 1.今日导读 在这个信息爆炸的年代,获取知识是一件越来越容易的事情。人们曾经认为,如此的时代进步会给高等教育带来众多便利。但事实的...

aibinxiao
今天
12
0
OSChina 周三乱弹 —— 你被我从 osc 老婆们名单中踢出了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小鱼丁:分享五月天的单曲《后来的我们 (电影《后来的我们》片名曲)》: 《后来的我们 (电影《后来的我们》片名曲)》- 五月天 手机党少年们想...

小小编辑
今天
604
19
Spring Boot Admin 2.0开箱体验

概述 在我之前的 《Spring Boot应用监控实战》 一文中,讲述了如何利用 Spring Boot Admin 1.5.X 版本来可视化地监控 Spring Boot 应用。说时迟,那时快,现在 Spring Boot Admin 都更新到 ...

CodeSheep
今天
5
0
Python + Selenium + Chrome 使用代理 auth 的用户名密码授权

米扑代理,全球领导的代理品牌,专注代理行业近十年,提供开放、私密、独享代理,并可免费试用 米扑代理官网:https://proxy.mimvp.com 本文示例,是结合米扑代理的私密、独享、开放代理,专...

sunboy2050
今天
0
0
实现异步有哪些方法

有哪些方法可以实现异步呢? 方式一:java 线程池 示例: @Test public final void test_ThreadPool() throws InterruptedException { ScheduledThreadPoolExecutor scheduledThre......

黄威
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部