IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mySQL中count查询 -> 正文阅读

[大数据]mySQL中count查询

1.目的:

想要查询一个表里数据总条数今日更新的数据条数

2.原来

想到的需要写两个SQL语句,但是比较麻烦
SQL1:

SELECT COUNT(*) FROM `sys_logininfor`

SQL2:

		SELECT COUNT(*) FROM `sys_logininfor`
		where TO_DAYS(login_time) = TO_DAYS(NOW())

3.优化

在得知count()中可以写case…when…的语句时,想到了如下的方法:

SELECT COUNT(CASE WHEN TO_DAYS(login_time) = TO_DAYS(NOW()) THEN 1 END) AS TodayNum FROM `sys_logininfor`

4.再优化省去case…when…

SELECT COUNT(TO_DAYS(login_time) = TO_DAYS(NOW()) OR NULL) AS TodayLogin, COUNT(*) AS AllLogin FROM `sys_logininfor`

5.补充(按照时间查询)

一、查询当天的记录:
1 select * from create_time where TO_DAYS(create_time) = TO_DAYS(NOW())
注意:这里的create_time是数据库中的时间字段,会根据这个时间去和今天的时间对比获取数据.

二、查询昨天(固定几天前)的记录:
1 select count(1) from kunyao_shop_order where is_payed = 1 and TO_DAYS(NOW()) - TO_DAYS(create_time) = 1
注意:这里的时间实际上和查询当天的记录一样,但是用了算术差的概念,同样的要获取前天的时间就将结果的1改成2即可

三、查询当前这周的数据:

1 SELECT * FROM wx_fund_record WHERE YEARWEEK(date_format(create_time,’%Y-%m-%d’)) = YEARWEEK(now());
注意:这里的create_time是数据库中的时间字段,会根据这个时间去和今天的时间对比获取数据,除此之外,这个SQL语句获取的是美国的一周数据,中国和美国的周期不一样,美国的周日是中国的周一,所以如果要按照中国的周获取结果,需要推迟一天,SQL在下面:

1 SELECT * FROM wx_fund_record WHERE store_id=1 AND YEARWEEK(date_format(create_time,’%Y-%m-%d’),1) = YEARWEEK(now(),1);
2 SELECT SUM(money) FROM wx_fund_record WHERE store_id=?1 AND DATE_FORMAT( create_time, ‘%Y%m’ ) = DATE_FORMAT( CURDATE( ) , ‘%Y%m’ )

四、查询本月的数据:
1 SELECT * FROM wx_fund_record WHERE store_id=1 AND DATE_FORMAT( create_time, ‘%Y%m’ ) = DATE_FORMAT( CURDATE( ) , ‘%Y%m’ )
注意:这里的create_time是数据库中的时间字段,会根据这个时间去和今天的时间对比获取数据.

五、查询当前日期之前一周内每天的数据

SELECT a.click_date,IFNULL(b.count,0) AS COUNT
FROM (
SELECT CURDATE() AS click_date
UNION ALL
SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY) AS click_date
UNION ALL
SELECT DATE_SUB(CURDATE(), INTERVAL 2 DAY) AS click_date
UNION ALL
SELECT DATE_SUB(CURDATE(), INTERVAL 3 DAY) AS click_date
UNION ALL
SELECT DATE_SUB(CURDATE(), INTERVAL 4 DAY) AS click_date
UNION ALL
SELECT DATE_SUB(CURDATE(), INTERVAL 5 DAY) AS click_date
UNION ALL
SELECT DATE_SUB(CURDATE(), INTERVAL 6 DAY) AS click_date
) a LEFT JOIN (
SELECT DATE(create_time) AS totalMoney, SUM(money+wallet) AS COUNT
FROM kunyao_shop_member_fund_record WHERE TYPE = 2
GROUP BY DATE(create_time)
) b ON a.click_date = b.totalMoney;

6.补充(MySQL 的CASE WHEN 语句使用说明)

(1)mysql数据库中CASE WHEN语句。
case when语句,用于计算条件列表并返回多个可能结果表达式之一。
CASE 具有两种格式:简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。 CASE 搜索函数计算一组布尔表达式以确定结果。 两种格式都支持可选的 ELSE 参数。
语法如下:
1)简单 CASE 函数:

CASE input_expression
WHEN when_expression THEN
    result_expression [...n ] [
ELSE
    else_result_expression
END

参数介绍:
input_expression 是使用简单 CASE 格式时所计算的表达式。Input_expression 是任何有效的 Microsoft SQL Server 表达式。
WHEN when_expression 使用简单 CASE 格式时 input_expression 所比较的简单表达式。When_expression 是任意有效的 SQL Server 表达式。Input_expression 和每个 when_expression 的数据类型必须相同,或者是隐性转换。

占位符 ,表明可以使用多个 WHEN when_expression THEN result_expression 子句或 WHEN Boolean_expression THEN result_expression 子句。

THEN result_expression 当 input_expression = when_expression 取值为 TRUE,或者 Boolean_expression 取值 TRUE 时返回的表达式。
result expression 是任意有效的 SQL Server 表达式。

ELSE else_result_expression 当比较运算取值不为 TRUE 时返回的表达式。如果省略此参数并且比较运算取值不为 TRUE,CASE 将返回 NULL 值。else_result_expression 是任意有效的 SQL Server 表达式。else_result_expression 和所有 result_expression 的数据类型必须相同,或者必须是隐性转换。

简单 CASE 函数: 返回结果值介绍:

计算 input_expression,然后按指定顺序对每个 WHEN 子句的 input_expression = when_expression 进行计算。
返回第一个取值为 TRUE 的 (input_expression = when_expression) 的 result_expression。如果没有取值为 TRUE 的 input_expression = when_expression,则当指定 ELSE 子句时 SQL Server 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。

2)CASE 搜索函数:

CASE
WHEN Boolean_expression THEN
    result_expression [...n ] [
ELSE
    else_result_expression
END

参数介绍:
WHEN Boolean_expression 使用 CASE 搜索格式时所计算的布尔表达式。Boolean_expression 是任意有效的布尔表达式。结果类型从 result_expressions 和可选 else_result_expression 的类型集合中返回最高的优先规则类型。有关更多信息,请参见数据类型的优先顺序。

CASE 搜索函数:返回结果值介绍:
按指定顺序为每个 WHEN 子句的 Boolean_expression 求值。返回第一个取值为 TRUE 的 Boolean_expression 的 result_expression。
如果没有取值为 TRUE 的 Boolean_expression,则当指定 ELSE 子句时 SQL Server 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。

参考笔记:

MySQL查询时间
MySQLcase when语句

仅用于个人纪录

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:41:07  更:2022-10-17 12:43:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 22:33:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码