Navicat使用教程:获取MySQL中的高级行数(第2部分)
Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。
在上篇文章中,我们使用了原生COUNT()函数的不同变体来计算一个MySQL表中的行数。在这篇文章中,我们将以更复杂的方式使用COUNT()函数来计算唯一值以及满足条件的值。
不同计数
COUNT(DISTINCT)函数返回具有唯一非空值的行数。因此,包含DISTINCT关键字将从计数中删除重复的行。它的语法是:
1
COUNT(DISTINCT expr,[expr...])
与常规COUNT()函数一样,上面的expr参数可以是任何给定的表达式,包括特定的列、所有列(*)、函数返回值或表达式(如IF/CASE 语句)。
一个简单的例子
假设我们有下表的客户:
+------------+-------------+
| last_name | first_name |
+------------+-------------+
| Tannen | Biff |
+------------+-------------+
| McFly | Marty |
+------------+-------------+
| Brown | Dr. Emmett |
+------------+-------------+
| McFly | George |
+------------+-------------+
调用COUNT(*)将返回所有行的数目(4),而姓氏上的非重复计数将把姓氏重复的每一行计数为1,这样我们得到的总数为3:
SELECT COUNT(*), COUNT(DISTINCT last_name) FROM clients;
+----------+---------------------------+
| COUNT(*) | COUNT(DISTINCT last_name) |
+----------+---------------------------+
| 4 | 3 |
+----------+---------------------------+
使用表达式的条件计数
如上所述,COUNT()函数参数不限于列名;函数返回值和表达式(如IF/CASE 语句)也是公平的。
这是一个包含多个用户电话号码和性别的表(为了简单起见,限制为两个):
+------------+---------+
| tel | sex |
+------------+---------+
| 7136609221 | male |
+------------+---------+
| 7136609222 | male |
+------------+---------+
| 7136609223 | female |
+------------+---------+
| 7136609228 | male |
+------------+---------+
| 7136609222 | male |
+------------+---------+
| 7136609223 | female |
+------------+---------+
假设我们想要构建一个查询,告诉我们表中有多少不同的男女。该人员通过其电话('tel')号码进行识别。同一个“tel”可能出现多次,但该tel的性别只应计算一次。
这里有一个选项,对每列使用不同的计数:
SELECT COUNT(DISTINCT tel) gender_count,
COUNT(DISTINCT CASE WHEN gender = 'male' THEN tel END) male_count,
COUNT(DISTINCT CASE WHEN gender = 'female' THEN tel END) female_count
FROM people
此SELECT语句将生成以下内容:
+--------------+------------+---------------+
| gender_count | male_count | female_count |
+--------------+------------+---------------+
| 4 | 3 | 1 |
+--------------+------------+---------------+
分组并包括总计
还可以使用GROUP BY垂直堆叠计数:
export default new Router({
routes: [
......
],
scrollBehavior (to, from, savedPosition) {
// console.log(to) // to:要进入的目标路由对象,到哪里去
// console.log(from) // from:离开的路由对象,哪里来
// console.log(savedPosition) // savePosition:会记录滚动条的坐标
if(savedPosition) {
return savedPosition;
}else{
return {x:0,y:0}
}
}
})
复制代码
三.Cookie储存
1.建立一个cookieUtil.js的文件
复制代码
//设置cookie
export function setCookie(key,value) {
var Days = 0.6;
var exdate = new Date(www.michenggw.com); //获取时间
exdate.setTime(exdate.getTime() + Days*24*60*60*1000); //保存的天数
//字符串拼接cookie
window.document.cookie = key + "=" + value + ";path=/;expires=" + exdate.toGMTString();
};
//读取cookie
export function getCookie(param) {
var c_param = '';
if (document.cookie.length www.dasheng178.com> 0) {
var arr = document.cookie.www.mcyllpt.com split('; '); //这里显示的格式需要切割一下自己可输出看下
for (var i = 0; i < arr.length; i++) {
var arr2 = arr[i].split('='); //再次切割
//判断查找相对应的值
if (arr2[0] == param) {
c_param = arr2[1];
//保存到保存数据的地方
}
}
return c_param;
}
};
function padLeftZero www.fengshen157.com/(str) {
return ('00' + str).substr(str.length);
};
+---------+-------+
| GroupId | Count |
+---------+-------+
| 1 | 5 |
+---------+-------+
| 2 | 4 |
+---------+-------+
| 3 | 7 |
+---------+-------+
| Total: | 11 |
+---------+-------+
“total:”是使用SQL GROUPING()函数生成的,该函数添加在MySQL 8.0.1中。它将表示超级聚合行(由汇总生成)中所有值的集合的空值与常规行中的空值区分开来。
以下是完整的SQL:
Select Case When Grouping(GroupId) = 1
Then 'Total:'
Else GroupId
End As GroupId,
Count(*) Count
From user_groups
Group By GroupId With Rollup
Order By Grouping(GroupId), GroupId
下篇文章,我们将从多个表和视图中获取行计数。
Navicat使用教程:获取MySQL中的高级行数(第2部分)的更多相关文章
- 如何获取jqGrid中选择的行的数据
原文地址:http://hi.baidu.com/feifan3211/item/c5831f44158761a5df2a9fc1 如何获取jqGrid中选择的行的数据? 下面可以获取选择一行的id, ...
- 获取jqGrid中选择的行的数据以及 jqGrid获得所有行数据的方法
获取jqGrid中选择的行的数据: 获取选择一行的id,如果你选择多行,那下面的id是最后选择的行的id: 1 var id=$('#gridTable').jqGrid('getGridPara ...
- Vue. 之 Element获取table中选中的行
Vue. 之 Element获取table中选中的行 问题描述: 如下截图,在Table中选择数据后,然后在点击“统计”按钮,获取Table表中选择的行 解决方案: 1. 给“统计”这个按钮添加一个点 ...
- OC获取文件(夹)的代码行数
/* 考察NSString NSArray NSFileManager */ #import <Foundation/Foundation.h> /* 计算单个文件的代码行数 path:文 ...
- 【未解决】对于使用Windows的IDEA进行编译的文件,但无法在Linux系统中统计代码行数的疑问
在我学习使用Windows的IDEA的过程中,将代码文件转移到Linux虚拟机当中,但无法在Linux系统中统计代码行数. 注意:拷贝进虚拟机的文件均能编译运行. 具体过程如下: root@yogil ...
- 删除log文件末尾中指定的行数
/// <summary> /// 删除log文件末尾中指定的行数 /// </summary> /// <param name ...
- iOS中求出label中文字的行数和每一行的内容
今天遇到一个需求,需要计算label中文字的行数.想了好久也没想到好的解决方法,就在网上找了下.结果发现一篇文章是讲这个的.这部分代码不但能够求出一个label中文字行数,更厉害的是能够求出每一行的内 ...
- Navicat使用教程:获取MySQL中的行数(第1部分)
下载Navicat Premium最新版本 Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL.Oracle及PostgreSQL数据库,让管理不 ...
- CI中获取读操作的结果集行数+获取写操作的影响行数
本质:读操作,用mysql_num_rows函数,写操作用mysql_affected_rows函数 mysql_num_rows() 返回结果集中行的数目.此命令仅对 SELECT 语句有效.要取得 ...
随机推荐
- NO 18---- webpack 4.x 使用遇到的问题以及开发配置
最近在项目中用webpack的过程中老是出现问题,很是纳闷,按理说一直这样使用没有问题啊,经过我研究后发现,是因为在webpack更新到4.x之后,操作方式与之前相比变化很大.而我们使用npm默认安装 ...
- 表格 - bootStrap4常用CSS笔记
[表格标签] <table> 定义一个表格 <thead> 表格表头 <tbody> 表格主体内容 <tr> 行 <th> 表头列 &l ...
- tree命令详解
基础命令学习目录首页 原文链接:http://man.linuxde.net/tree -a:显示所有文件和目录:-A:使用ASNI绘图字符显示树状图而非以ASCII字符组合:-C:在文件和目录清单加 ...
- 王者荣耀交流协会final发布文案美工展示博客
logo: 我们的logo是蓝底白字,非常简洁大气的设计感,上面印有我们的软件名称,更好的直观的彰显了我们的主题.我们的软件就是要迎合使用者,给使用者更加方便快捷的工作体验,更好的衡量自己的时间分配. ...
- Daily Scrumming* 2015.10.25(Day 6)
一.总体情况总结 1.UI今日总结:初步设计了社团详情界面 2.后端今日总结:讨论并设计数据库,表内容,属性和相互联系等,并在rails的activeRecord和activeModel中实现,同时设 ...
- 第二阶段Sprint冲刺会议6
进展:将“录制”及“保存”整合到一起,修复出现的Bug,使之能够正常运行.
- 数据库,总结,新技能get
上来先粘代码吧,这篇本来就不是用来让你们看的,我就是单纯的记录下,嗯~对,总结!!! 首先:first //绑定年份 YearSearch.Items.Clear(); for (int i = Da ...
- Hibernate笔记③--集合映射、组合映射、联合主键、查询案例
lazy 懒加载 默认为proxy 继承映射 discriminant column="type" type="string" 集合映射 生成表的语句: ...
- 使用Git进行代码管理心得------------个人练习
一.在github.com上的操作 今天我们实践课程学习了用Git进行代码版本,使用github进行代码托管,我和队友在官网上创建了自己的Organization,将Auto CS fork到了小 ...
- PAT 甲级 1112 Stucked Keyboard
https://pintia.cn/problem-sets/994805342720868352/problems/994805357933608960 On a broken keyboard, ...