首页 > 数据库 >力扣数据库1193. 每月交易 I

力扣数据库1193. 每月交易 I

时间:2024-10-12 19:47:28浏览次数:9  
标签:count -- 1193 approved 力扣 amount date trans 数据库

一、数据

表:Transactions

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| id            | int     |
| country       | varchar |
| state         | enum    |
| amount        | int     |
| trans_date    | date    |
+---------------+---------+
id 是这个表的主键。
该表包含有关传入事务的信息。
state 列类型为 ["approved", "declined"] 之一。

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

以 任意顺序 返回结果表。

查询结果格式如下所示。

示例 1:

输入:
Transactions table:+------+---------+----------+--------+------------+
| id   | country | state    | amount | trans_date |
+------+---------+----------+--------+------------+
| 121  | US      | approved | 1000   | 2018-12-18 |
| 122  | US      | declined | 2000   | 2018-12-19 |
| 123  | US      | approved | 2000   | 2019-01-01 |
| 124  | DE      | approved | 2000   | 2019-01-07 |
+------+---------+----------+--------+------------+
输出:
+----------+---------+-------------+----------------+--------------------+-----------------------+
| month    | country | trans_count | approved_count | trans_total_amount | approved_total_amount |
+----------+---------+-------------+----------------+--------------------+-----------------------+
| 2018-12  | US      | 2           | 1              | 3000               | 1000                  |
| 2019-01  | US      | 1           | 1              | 2000               | 2000                  |
| 2019-01  | DE      | 1           | 1              | 2000               | 2000                  |
+----------+---------+-------------+----------------+--------------------+-----------------------+

二、分析

1、由示例数据可以看出需要找出每个月和每个国家/地区的相关数据,因此需要对`trans_date`列和`country`进行GROUP BY分组计算,同时给的原始数据为`date`类型,因此也需要对`trans_date`列进行截取,提取年份和月份。

2、`state`列代表的就是该事务是否被批准,因为`state`列就有两个数据,因此可以使用IF函数删选被批准和未被批准的事务。

三、代码

select 
    substring(trans_date,1,7) as month, -- 对trans_date列进行截取,从1(头)开始,截取7位就能得到年份和月份
    country,
    count(id) as trans_count, -- 事务的总数
    count(if(state = 'approved',1,null)) as approved_count, -- 计算被批准的事务总数,IF(条件,值1,值2) --> 条件为真返回值1,为假返回值2,且count函数不计算为空值的情况
    sum(amount) as trans_total_amount, -- 总金额
    sum(if(state = 'approved',amount,0)) as approved_total_amount -- 计算被批准的事务的总金额,IF(条件,值1,值2) --> 条件为真返回值1,为假返回值2
from Transactions
group by month,country; -- 对月份和国家进行分组

四、总结

1、考察了IF函数的使用,IF(条件,值1,值2),条件为真,返回值1,反之返回值2。

2、考察了count函数的使用技巧,count函数计算行数,且自动跳过为空的行。

标签:count,--,1193,approved,力扣,amount,date,trans,数据库
From: https://blog.csdn.net/dhdbanwan/article/details/142861808

相关文章

  • 力扣数据库1174. 即时食物配送 II
    一、数据配送表: Delivery+-----------------------------+---------+|ColumnName|Type|+-----------------------------+---------+|delivery_id|int||customer_id|int||order_date......
  • 数据库三范式
    第一范式主要是确保数据表中每个字段的值必须具有原子性,也就是说数据表中每个字段的值为不可再拆分的最新数据单元。第二范式要求在满足第一范式的基础上,还要满足数据表里的每一条数据记录,都是可唯一标识的。而且所有非主键字段,都必须完全依赖主键,不能只依赖主键的一部分。如果知......
  • 【力扣150&Golang】分发糖果
    题目:分发糖果n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到1个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。请你给每个孩子分发糖果,计算并返回需要准备的最少糖果数目。示例......
  • 【力扣150&Golang】加油站
    题目:加油站在一条环路上有n个加油站,其中第i个加油站有汽油gas[i]升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组gas和cost,如果你可以按顺序绕环路行......
  • Springboot高校学生奖、助学金管理系统t0v2u(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表学生,奖助学金,奖助学金申请,贫困生申请,奖助学金发放,工作类型,勤工助学岗位,岗位申请开题报告内容一、研究背景随着高等教育的普及和学生数量的不断增加,高校......
  • Springboot高校学科竞赛赛事管理1313s(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表评委老师,学生,竞赛类型,竞赛信息,参赛记录,竞赛成绩开题报告内容一、选题背景随着高校教育的快速发展和学科竞赛的日益普及,建立一个高效、便捷、公平的学科竞......
  • Springboot高校失物招领信息平台h8spk(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,物品分类,招领启事,寻物启事开题报告内容一、研究背景与意义在高校中,由于学生人数众多且流动性大,个人物品的遗失事件时有发生。这些失物可能包含有价值的......
  • Starrocks表的数据库字段类型及与MySQL 的差异
    最近有用到Starrocks,实际使用中基本可以当作mysql来使用,但是数据库字段还是有所不同的。与MySQL相同或相似的基础类型数值类型TINYINT、SMALLINT、INT/INTEGER、BIGINT:在Starrocks和MySQL中的定义和用途基本相似。都是用于存储整数,范围也和MySQL中的对应类型相同,例如TI......
  • 基于JSP本科生毕业设计选题系统的设计与实现<免费开题>全套源码+文章lw+毕业设计+课程设
    基于JSP本科生毕业设计选题系统的设计与实现<免费开题>全套源码+文章lw+毕业设计+课程设计+数据库+ppt摘要随着高校信息化管理系统平台的广泛应用,文件信息的传递不再受到时间和空间的制约,毕业设计是高校教学管理的重要工作内容之一,随着高校毕业设计数量的逐年递增,毕业设计......
  • 网站数据库连接失败怎么办?
    当遇到网站数据库连接失败的问题时,可以按照以下步骤进行排查和解决:检查数据库服务状态:确认数据库服务是否正常运行。使用命令行工具或管理界面检查数据库服务的状态。检查网络连接:验证服务器与数据库之间的网络连接是否正常。尝试从服务器ping数据库服务器地址,确保......