SQL-每日一题【1193. 每月交易 I】

题目

Table: Transactions

编写一个 sql 查询来查找每个月和每个国家/地区的事务数及其总金额、已批准的事务数及其总金额。

以 任意顺序 返回结果表。

查询结果格式如下所示。

示例 1:

 

 

解题思路

1.题目要求我们查找每个月和每个国家/地区的事务数及其总金额、已批准的事务数及其总金额。我们可以根据示例给出的输出结果表来进行查询。

2.在查询之前我们要弄清楚 sum() 和 count() 函数。

  • 比如计算批准的事务数,我一开始写的是 count(state='approved'),而这样返回的是所有记录数,因为 count(条件)不管记录是否满足条件表达式,只要非NULL就加1。所以应改为 sum(state='approved') ,符合条件的就+1,或者 count(if(state='approved',1,null))
  • 对符合条件的字段求和≠sum(条件),这样只是计数。

3.然后我们开始查询,我们先对记录进行分组,首先按照 month 分,再按 country 分,分好后的组内就是同一个国家在同一个月的记录。之后用 left()函数提取 trans_date 字符串的左边部分,也就是我们所需要的年和月。country 直接查询出即可。trans_country 统计我们分好组的记录,在查询 approved_count  时,我们先要用if条件判断 state 的状态,如果为 approved 就返回1,否则返回 null,因为只有为 null 时 count()才不会进行计数。

4.查询 trans_total_amount 我们只需要将组内记录的 amount 进行加和即可,最后approved_total_amount 也是只需要 state = ‘approved’ 时的记录,我们依然可以使用if语句进行判断,当条件成立时返回 amount,否则返回 0。

代码实现

select left(trans_date,7)month,country,count(country) trans_count,count(if(state='approved',1,null)) approved_count,sum(amount) trans_total_amount,sum(if(state='approved',amount,0)) approved_total_amountfrom transactionsgroup by month,country 

测试结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/59523.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python之特殊属性、对象的浅拷贝和深拷贝

一、特殊属性 Python对象中包含了很多双下划线开始和结束的属性,这些是特殊属性,有特殊用法。这里我们列出常见的特殊属性: 特殊属性含义obj.__dict__对象的属性字典obj.__class__对象所属的类class.__bases__表示类的父类(多继承时&#x…

并发——什么是线程死锁?如何避免死锁?

文章目录 1. 认识线程死锁2. 如何避免线程死锁? 1. 认识线程死锁 线程死锁描述的是这样一种情况:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。 如下图所示&#xff…

以太网收发及TSN概述

一、概述 TSN(Time-Sensitive Networking)时间敏感网络,即在非确定性的以太网中实现确定性的最小时间延时的协议族,是IEEE 802.1工作组中的TSN工作组开发的一套协议标准,定义了以太网数据传输的时间敏感机制&#xff…

加量不加价,比亚迪驱逐舰05焕发新生,冠军加新120km豪华版来袭

根据最新消息,比亚迪驱逐舰05冠军版推出了一款崭新的豪华车型,其预售价为11.98万元。该车具备出色的续航性能,最高续航里程可达1200公里,并且支持17千瓦直流快速充电、VTOL移动电站以及NFC全场景数字钥匙。 此外,该车…

Linux 目录结构

初学Linux,首先需要弄清Linux 标准目录结构 / root --- 启动Linux时使用的一些核心文件。如操作系统内核、引导程序Grub等。home --- 存储普通用户的个人文件 ftp --- 用户所有服务httpdsambauser1user2bin --- 系统启动时需要的执行文件(二进制&#x…

8月9日上课内容 nginx负载均衡

负载均衡工作当中用的很多的,也是面试会问的很重要的一个点 负载均衡:通过反向代理来实现(nginx只有反向代理才能做负载均衡) 正向代理的配置方法(用的较少) 反向代理的方式:四层代理与七层代…

解数独(Java)

题目链接: 力扣 题目详情: 37. 解数独t编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只…

springboot启动忽略某些类

springboot启动忽略某些类 描述解决方案单拉一个提交,把所有的涉及kafka消费的都不注入容器通过配置ComponentScan的excludeFilters配置了不生效后续处理改之前改之后解释 总结 拆分环境 感触解决实现demo参考 描述 目前我这的开发环境和测试环境数据库是两份&#…

Vue 本地应用 记事本 v-on v-model v-for使用

新增功能 vue当中如何生成列表结构?使用的指令是v-for,同时要有一个可以生成列表的数据,常用的是数组。记事本里面的内容并不复杂,所以这里使用字符串数组就行了。 获取用户输入的内容使用绑定v-model,双向数据绑定&a…

【Vue+Element-plus】记录后台首页多echart图静态页面

一、页面效果 二、完整代码 Index.vue <template><div><div><DateTime /><!-- {{username}} --></div><el-row :gutter"20"><el-col :span"8"><div class"grid-content bg-purple"><P…

聚焦智慧医疗-RK3566智能主板助力POCT领域

POCT又称即时检验&#xff0c;是IVD(体外诊断)行业的一个细分领域&#xff0c;是指在采样现场即刻进行的快速诊断&#xff0c;省去了标本在实验室检验的复杂处&#xff0c;利用便携式分析仪器及配套试剂快速得到检测结果的一种检测方式。常见的POCT设备有生化分析仪、免疫分析仪…

MySQL及SQL语句(3)

MySQL及SQL语句(3) 文章目录 MySQL及SQL语句(3)一、多表查询1.1 准备sql1.2 笛卡尔积1.3 多表查询的分类&#xff1a;内连接查询外连接查询子查询多表查询练习 二、事务2.1 事务的基本介绍概念操作实例事务提交的两种方式 2.2 事务的四大特征原子性持久性隔离性一致性 2.3 事务…