统计相关函数

COUNT和SUM函数使用小技巧

参考自: MySQL - Conditional COUNT with GROUP BY

在一个 SQL 中统计多个指标的个数:

SELECT COUNT(DISTINCT col1)
, COUNT(DISTINCT CASE WHEN col2 > 10 THEN col2 ELSE 0 END) - 1
, SUM(CASE WHEN col3 > 0 THEN 1 ELSE 0 END)
FROM tableName;

Date and Time Functions

DATE_ADD()/DATE_SUB()

MySQL 5.7 DATE_ADD()

DATE_ADD(dateTime, INTERVAL 100 SECOND)


DATE_FORMAT()

MySQL 5.7 DATE_FORMAT()

DATE_FORMAT(dateTime, "%Y-%m-%d %H:%i:%S")


TIMESTAMPDIFF()/TIMESTAMPADD()

TIMESTAMPDIFF(unit, expr1, expr2): expr2 - expr1 得到多少个 unit .

TIMESTAMPADD(unit,interval,datetime_expr)


String Functions

LENGTH() VS CHAR_LENGTH()

LENGTH(): 字符串占用存储空间的字节数;

CHAR_LENGTH(): 字符串在这种字符集下的字符个数;

在 UTF-8 编码下, 一个中文汉字一般占用三个字节:

mysql> SELECT LENGTH(_utf8mb4 '中文'), CHAR_LENGTH(_utf8mb4 '中文');
+---------------------------+--------------------------------+
| LENGTH(_utf8mb4 '中文') | CHAR_LENGTH(_utf8mb4 '中文') |
+---------------------------+--------------------------------+
| 6 | 2 |
+---------------------------+--------------------------------+
1 row in set (0.00 sec)

SUBSTRING()/LOCATE()

SUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len), SUBSTRING(str FROM pos FOR len)`

LOCATE(substr,str), LOCATE(substr,str,pos)

mysql> SELECT SUBSTRING('大部门-中部门-小部门',
LOCATE('大部门-中部门', '大部门-中部门-小部门') + CHAR_LENGTH('大部门-中部门') + 1)
AS sub_dept_name;
+---------------+
| sub_dept_name |
+---------------+
| 小部门 |
+---------------+
1 row in set (0.01 sec)

TRIM()

删除字符串中的 前缀/后缀/任意位置空白/特定 字符串(MySQL 5.7 TRIM):

mysql> SELECT TRIM('  bar   ');
+------------------+
| TRIM(' bar ') |
+------------------+
| bar |
+------------------+
1 row in set (0.01 sec) mysql> SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');
+------------------------------------+
| TRIM(LEADING 'x' FROM 'xxxbarxxx') |
+------------------------------------+
| barxxx |
+------------------------------------+
1 row in set (0.01 sec) mysql> SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');
+---------------------------------+
| TRIM(BOTH 'x' FROM 'xxxbarxxx') |
+---------------------------------+
| bar |
+---------------------------------+
1 row in set (0.00 sec) mysql> SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');
+-------------------------------------+
| TRIM(TRAILING 'xyz' FROM 'barxxyz') |
+-------------------------------------+
| barx |
+-------------------------------------+
1 row in set (0.01 sec)

MySQL 函数笔记的更多相关文章

  1. MySQL函数笔记

    MySQL函数笔记 日期函数 SELECT t1.xcjyrq, t1.* FROM view_sbxx t1 WHERE t1.syzt ; SELECT t1.xcjyrq, t1.* FROM ...

  2. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  3. MySQL学习笔记_7_MySQL常用内置函数

    MySQL常用内置函数 说明: 1)可以用在SELECT/UPDATE/DELETE中,及where,orderby,having中 2)在函数里将字段名作为参数,变量的值就是字段所对应的每一行的值. ...

  4. MYSQL进阶学习笔记五:MySQL函数的创建!(视频序号:进阶_13)

    知识点六:MySQL函数的创建(13) 内置函数: 自定义函数: 首先查看是否已经开启了创建函数的功能: SHOW VARIABLES LIKE ‘%fun%’; 如果变量的值是OFF,那么需要开启 ...

  5. 一千行MySQL学习笔记

    以下为本人当年初学MySQL时做的笔记,也从那时起没再更新过,但还是囊括了基本的知识点,有时还翻出来查查.是不是干货,就看亲们了~ 如果哪天笔记有更新了,我还是会更新该文章滴,其实笔记已经放到了Git ...

  6. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  7. MYSQL基础笔记(六)- 数据类型一

    数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...

  8. MYSQL基础笔记(五)- 练习作业:站点统计练习

    作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ...

  9. MySQL入门笔记(二)

    MySQL的数据类型.数据库操作.针对单表的操作以及简单的记录操作可参考:MySQL入门笔记(一) 五.子查询   子查询可简单地理解为查询中的查询,即子查询外部必然还有一层查询,并且这里的查询并非仅 ...

随机推荐

  1. [SCOI2011][bzoj2331] 地板 [插头dp]

    题面: 传送门 思路: 插头dp基础教程 这个L形......第一眼看上去真的是丧病啊 但是仔细想想,实际上也就是拿一堆路径铺满一个棋盘,这个路径还是有限制的 那还有什么好说的,插头dp上啊[雾] 首 ...

  2. ZOJ 3874 Permutation Graph ——分治 NTT

    发现每一块一定是按照一定的顺序的. 然后与标号无关,并且相同大小的对答案的影响相同. 然后列出递推式,上NTT+分治就可以了. 然后就可以与输入同阶处理答案了. #include <map> ...

  3. LoadRunner中请求HTTPS页面。

    哎,真是服了.国内网站上写的解决方法如此的粗糙. 如果用loadrunner访问HTTPS网页时出现:shut connection during attempt to negotiate SSL s ...

  4. webpack+babel+ES6+react环境搭建

    webpack+babel+ES6+react环境搭建 步骤: 1 创建项目结构 注意: 先创建一个项目目录  react  这个名字自定义,然后进入到这个目录下面 mkdir app //创建app ...

  5. ubuntu运行android studio出错unable to run mksdcard sdk tool

    原因:缺少lib 解决方法: sudo apt-get install lib32z1 lib32ncurses5  lib32stdc++6 完美解决.

  6. codechef AUG17 T4 Palindromic Game

    Palindromic Game Problem Code: PALINGAM There are two players A, B playing a game. Player A has a st ...

  7. 《手把手教你学C语言》学习笔记(10)--- 程序的循环控制

    C语言程序设计中,有些代码需要重复执行很多次,循环主要有三类: 一.for循环 1.基本格式为:for(表达式1:表达式2:表达式3){ //表达式1:循环变量赋初值 //表达式2:循环变量满足的条件 ...

  8. usb 2.0 支援的速度

    from http://www.usb.org/developers/docs/usb20_docs/ high speed : 480 Mb/s full speed : 12 Mb/s low s ...

  9. Jquery操作层级选择器

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. hadoop(一)hadoop简介

    1. Hadoop 版本衍化历史 Hadoop 是一个由 Apache 基金会所开发的开源分布式系统基础架构.用户可以在不了解 分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和 ...