iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Laravel中如何用聚合函数计算总数
  • 583
分享到

Laravel中如何用聚合函数计算总数

2023-07-05 00:07:17 583人浏览 泡泡鱼
摘要

本文小编为大家详细介绍“Laravel中如何用聚合函数计算总数”,内容详细,步骤清晰,细节处理妥当,希望这篇“Laravel中如何用聚合函数计算总数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。假如有电子邮件订阅

本文小编为大家详细介绍“Laravel中如何用聚合函数计算总数”,内容详细,步骤清晰,细节处理妥当,希望这篇“Laravel中如何用聚合函数计算总数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

假如有电子邮件订阅服务,希望显示订阅者的详情统计页面如下显示

订阅者总数确认(confirmed)未经证实(unconfirmed)取消(cancelled)拒绝(bounced)
20015050105

出于本文的目的,假设我们有一个subscribers包含以下格式数据的数据库表:

nameemailstatus
小明adam@hotmeteor.comconfirmed
小红taylor@laravel.comunconfirmed
小军jonathan@reinink.cacancelled
小花adam.wathan@gmail.combounced

大部分人的做法:

$total = Subscriber::count();$confirmed = Subscriber::where('status', 'confirmed')->count();$unconfirmed = Subscriber::where('status', 'unconfirmed')->count();$cancelled = Subscriber::where('status', 'cancelled')->count();$bounced = Subscriber::where('status', 'bounced')->count();

上面这样肯定会产生五条语句,这样做肯定是很不好。所以尝试优化一下,会使用另一个方法解决执行多条语句的问题:

$subscribers = Subscriber::all();$total = $subscribers->count();$confirmed = $subscribers->where('status', 'confirmed')->count();$unconfirmed = $subscribers->where('status', 'unconfirmed')->count();$cancelled = $subscribers->where('status', 'cancelled')->count();$bounced = $subscribers->where('status', 'bounced')->count();

上面先获取全部订阅者数据,然后再对这个结果集进行条件统计,使用集合.模型多条数据查询返回Illuminate\Database\Eloquent\Collection这样的方法,只适合再数据量不大的时候使用,如果我们的应用程序有数千或数百万订阅者,处理的时间会很慢,并且会使用大量内存。

条件聚合

实际上有一种非常简单的方法可以查询计算这些总数。诀窍是将条件放在聚合函数中。下面是一个 sql 示例:

select  count(*) as total,  count(case when status = 'confirmed' then 1 end) as confirmed,  count(case when status = 'unconfirmed' then 1 end) as unconfirmed,  count(case when status = 'cancelled' then 1 end) as cancelled,  count(case when status = 'bounced' then 1 end) as bouncedfrom subscribers total | confirmed | unconfirmed | cancelled | bounced-------+-----------+-------------+-----------+---------   200 |       150 |          50 |        30 |      25————————————————原文作者:4pmzzzzzzzzzz转自链接:https://learnku.com/articles/74652版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。

以下是在 Laravel 中使用查询构建器编写此查询:

$totals = DB::table('subscribers')    ->selectRaw('count(*) as total')    ->selectRaw("count(case when status = 'confirmed' then 1 end) as confirmed")    ->selectRaw("count(case when status = 'unconfirmed' then 1 end) as unconfirmed")    ->selectRaw("count(case when status = 'cancelled' then 1 end) as cancelled")    ->selectRaw("count(case when status = 'bounced' then 1 end) as bounced")    ->first();<div>Total: {{ $totals->total }}</div><div>Confirmed: {{ $totals->confirmed }}</div><div>Unconfirmed: {{ $totals->unconfirmed }}</div><div>Cancelled: {{ $totals->cancelled }}</div><div>Bounced: {{ $totals->bounced }}</div>

Boolean 列(字段)

表迁移创建 boolean 字段 , model定义属于转换 此处不用model为代码示例,可自行替换为model

如果使用boolean当字段列,将更容易,比如要查询subscribers表中的用户是否为拥有不同的角色权限。假设subscribers表中有is_adminis_treasureris_editoris_manager、字段

$totals = DB::table('subscribers')    ->selectRaw('count(*) as total')    ->selectRaw('count(is_admin or null) as admins')    ->selectRaw('count(is_treasurer or null) as treasurers')    ->selectRaw('count(is_editor or null) as editors')    ->selectRaw('count(is_manager or null) as managers')    ->first();

这是因为聚合函数count忽略null列。与PHPfalse || null返回false不同,在SQL(以及javascript)中,它返回null。基本上,如果A可以强制为真,则A || B返回值A;否则,返回B

这段话如果没理解,就看我下面说明:
使用laravel的boolean列,实际数据表里字段为tinyint,值为0(false)1(true), 比如
小明的is_admin字段为1(true),count(is_admin or null)可以看作表示为(1 or null),这A为真 返回A,最终sql为count(is_admin)
反之则是如is_admin字段为0(false),最终sql为count(null),则忽略此列

//php  返回 falsevar_dump(0 || null) //JavaScript 返回 nullconsole.log(0 || null)//SQL 返回 nullSELECT (0 or null) as result

读到这里,这篇“Laravel中如何用聚合函数计算总数”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: Laravel中如何用聚合函数计算总数

本文链接: https://www.lsjlt.com/news/348672.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Laravel中如何用聚合函数计算总数
    本文小编为大家详细介绍“Laravel中如何用聚合函数计算总数”,内容详细,步骤清晰,细节处理妥当,希望这篇“Laravel中如何用聚合函数计算总数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。假如有电子邮件订阅...
    99+
    2023-07-05
  • MongoDB中如何聚合统计计算
    这篇文章将为大家详细讲解有关MongoDB中如何聚合统计计算,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。我们一般通过表达式$sum来计算总和。因为MongoDB的文档有...
    99+
    2022-10-18
  • MySQL如何使用聚合函数
    这篇文章主要为大家展示了“MySQL如何使用聚合函数”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL如何使用聚合函数”这篇文章吧。聚合函数命令: sum...
    99+
    2022-10-19
  • 如何在PHP中使用数据聚合函数
    数据聚合函数是一种用于处理数据库表中多行数据的函数。在PHP中使用数据聚合函数可以使得我们方便地进行数据分析和处理,例如求和、平均数、最大值、最小值等。下面将介绍如何在PHP中使用数据聚合函数。一、介绍常用的数据聚合函数COUNT():计算...
    99+
    2023-05-18
    使用 PHP 数据聚合函数
  • SQLServer中聚合函数的用法
    聚合函数对一组值执行计算,并返回单个值。 除了 COUNT 外,聚合函数都会忽略 Null 值。 聚合函数经常与 SELECT 语句的 GROUP BY...
    99+
    2022-11-13
  • 如何在MySQL中使用count聚合函数
    如何在MySQL中使用count聚合函数?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、 基本使用count的基本作用是有两个:统计某个列的...
    99+
    2022-10-18
  • java中的数学计算函数的总结
    java中的数学计算函数Math类: java.lang.Math类中包含基本的数字操作,如指数、对数、平方根和三角函数。 java.math是一个包,提供用于执行任意精度整数(BigInteger)算法和任意精度小数(BigDecimal...
    99+
    2023-05-31
    java 数学函数 ava
  • MySQL中的聚合函数怎么用
    本篇内容介绍了“MySQL中的聚合函数怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,...
    99+
    2022-10-19
  • MySQL数据查询中如何使用集合/聚合函数查询
    小编给大家分享一下MySQL数据查询中如何使用集合/聚合函数查询,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!MySQL聚合函数如下:函数作用avg()返回某列的平均值count()返回某...
    99+
    2022-10-18
  • PHP 中使用 Elasticsearch 进行数据清洗与聚合计算
    概要:本文将介绍如何在 PHP 中使用 Elasticsearch 进行数据清洗和聚合计算。Elasticsearch 是一个强大而灵活的分布式搜索和分析引擎,它可以帮助我们通过对数据进行索引和查询来进行数据清洗和聚合计算。本文将通过具体的...
    99+
    2023-10-21
    PHP 数据清洗 elasticsearch 聚合计算
  • Mariadb中聚合函数和分组函数怎么使用
    这篇文章主要讲解了“Mariadb中聚合函数和分组函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mariadb中聚合函数和分组函数怎么使用”吧!聚合函数当我们需要汇总表中的数据而...
    99+
    2023-06-28
  • 如何在mongoDB中利用java处理聚合函数
    本篇文章给大家分享的是有关如何在mongoDB中利用java处理聚合函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。需要对document中...
    99+
    2022-10-18
  • SQL Server中的聚合函数怎么使用
    这篇“SQL Server中的聚合函数怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SQL Se...
    99+
    2023-06-30
  • pandas中聚合函数agg的具体用法
    今天看到pandas的聚合函数agg,比较陌生,平时的工作中处理数据的时候使用的也比较少,为了加深印象,总结一下使用的方法,其实还是挺好用的。 DataFrame.agg(func,...
    99+
    2022-11-11
  • SQL中的常用聚合函数是什么
    SQL中的常用聚合函数是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1)COUNT语法:COUNT(e1)参数:e1为一个表达式,可以是任意的数据类型返回:返回数值型数据...
    99+
    2023-06-06
  • SQL中的开窗函数详解可代替聚合函数使用
     在没学习开窗函数之前,我们都知道,用了分组之后,查询字段就只能是分组字段和聚合的字段,这带来了极大的不方便,有时我们查询时需要分组,又需要查询不分组的字段,每次都要又到子查询,这样显得sql语句...
    99+
    2022-10-18
  • 深入了解MySQL中聚合函数的使用
    目录什么是聚合函数SUM 函数MAX 函数MIN 函数AVG 函数COUNT 函数聚合函数综合小练习聚合函数综合练习 -1聚合函数综合练习 -2今天的章节我们将要来学习一下 “聚合函数” ;首先我...
    99+
    2022-07-27
    MySQL 聚合函数使用 MySQL 聚合函数
  • java8 如何实现分组计算数量和计算总数
    java8分组计算数量和计算总数 package com.pig4cloud.pigx.admin.api.vo; import lombok.Builder; import l...
    99+
    2022-11-12
  • 如何用php回溯算法计算组合总和
    本篇内容主要讲解“如何用php回溯算法计算组合总和”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用php回溯算法计算组合总和”吧!给定一个数组 candidates 和一个目标数 targe...
    99+
    2023-06-20
  • 使用PHP的array_sum()函数计算数组中所有元素的总和
    使用PHP的array_sum()函数计算数组中所有元素的总和PHP提供了强大的数组处理函数,其中array_sum()函数可以计算一个数组中所有元素的总和。在本文中,将详细介绍如何使用array_sum()函数,并提供一些相关的代码示例。...
    99+
    2023-11-04
    计算 PHP array_sum()
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作