首页 > 数据库 >SQL,力扣题目1699,两人之间的通话次数

SQL,力扣题目1699,两人之间的通话次数

时间:2024-10-30 12:17:05浏览次数:8  
标签:insert Calls into 力扣 values SQL duration id 1699

一、力扣链接

LeetCode_1699

二、题目描述

表: Calls

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| from_id     | int     |
| to_id       | int     |
| duration    | int     |
+-------------+---------+
该表没有主键(具有唯一值的列),它可能包含重复项。
该表包含 from_id 与 to_id 间的一次电话的时长。
from_id != to_id

编写解决方案,统计每一对用户 (person1, person2) 之间的通话次数和通话总时长,其中 person1 < person2 。

以 任意顺序 返回结果表。

三、目标拆解

四、建表语句

Create table If Not Exists Calls (from_id int, to_id int, duration int)
Truncate table Calls
insert into Calls (from_id, to_id, duration) values ('1', '2', '59')
insert into Calls (from_id, to_id, duration) values ('2', '1', '11')
insert into Calls (from_id, to_id, duration) values ('1', '3', '20')
insert into Calls (from_id, to_id, duration) values ('3', '4', '100')
insert into Calls (from_id, to_id, duration) values ('3', '4', '200')
insert into Calls (from_id, to_id, duration) values ('3', '4', '200')
insert into Calls (from_id, to_id, duration) values ('4', '3', '499')

五、过程分析

1、判断from_id 是否大于to_id

2、按照from_id 和to_id 两个字段分组

六、代码实现

with t1 as (
    select if(from_id > to_id, to_id, from_id) new_from_id,
           if(from_id > to_id, from_id, to_id) new_to_id,
           c.*
    from calls c
)
select new_from_id person1,
       new_to_id person2,
       count(1) call_count,
       sum(duration) total_duration
from t1 group by new_from_id, new_to_id;

七、结果验证

八、小结

1、使用if() 函数判断交换两个字段的位置

2、使用group by 分组后,count() 和sum() 聚合求次数和通话时长

标签:insert,Calls,into,力扣,values,SQL,duration,id,1699
From: https://blog.csdn.net/m0_59659684/article/details/143311128

相关文章

  • IDEA设置语法高亮自动检查xml中sql语法
    1、首先如果使用的是终极版直接去SQLDialects里面设置就行。详细信息2、如果是社区版就没有这个功能,但如果可以自己安装MybatisCodeHelperPro插件idea中点File->Settings->Plugins,输入MyBatisCodeHelperPro点击安装即可,一年的费用是十来块;另外网上到处有魄姐教程不细说,用于......
  • 为什么MySQL单表不能超过2000万行? (1)
    ​最近看到一篇《我说MySQL每张表最好不要超过2000万数据,面试官让我回去等通知》的文章,非常有趣。文中提到,他朋友在面试的过程中说,自己的工作就是把用户操作信息存到MySQL里,因为数据量超大(5000万条左右),需要每天定时生成3张表,然后将数据取模分别存到这三张表里。下面是两人的对......
  • MySQL的临时表空间
    InnoDB使用会话临时表空间和全局临时表空间。会话临时表空间会话临时表空间用于存储用户创建的临时表,以及在InnoDB被配置为磁盘上内部临时表的存储引擎时由优化器创建的内部临时表。从MySQL8.0.16开始,磁盘上内部临时表使用的存储引擎是InnoDB。(以前,存储引擎由internal_tmp_d......
  • windows下Mysql8.0.12安装详解
    MySQL的安装过程还是比较繁琐,为了以后安装节约时间,将其详细安装过程总结如下:1>下载对应版本下载地址:https://dev.mysql.com/downloads/mysql/2>将下载的.zip文件解压到需要安装的目录下,在该目录下创建一个名为data的空文件夹和一个my.ini文件3>配置初始化的my.ini文件......
  • 千万级数据深分页查询SQL性能优化实践
    作者:京东零售曹志飞一、系统介绍和问题描述如何在Mysql中实现上亿数据的遍历查询?先来介绍一下系统主角:关注系统,主要是维护京东用户和业务对象之前的关注关系;并对外提供各种关系查询,比如查询用户的关注商品或店铺列表,查询用户是否关注了某个商品或店铺等。但是最近接到了一个新......
  • GaussDB可维护性--支持SQL PATCH
    支持SQLPATCH可获得性本特性自503.1.0版本开始引入。特性简介SQLPATCH能够在避免直接修改用户业务语句的前提下对查询执行的方式做一定调整。在发现查询语句的执行计划、执行方式未达预期的场景下,可以通过创建查询补丁的方式,使用Hint对查询计划进行调优或对特定的语句......
  • SQL注入介绍
    初探SQL注入的分类、挖掘技巧以及防御的方法漏洞介绍(1)注入条件用户能控制输入且输入的内容被带到数据库去执行(2)注入原理对用户输入过滤不严谨。(3)注入本质违背了“数据与代码分离”的原则(4)可能存在注入的SQL语句地方select语句输入payload,最后加注释符即可。inse......
  • System.Data.SqlClient老版本引发内存溢出的问题
    有一个朋友和我说他负责的项目有内存溢出的情况,内存一直居高不下达到了8G。生产环境碰到内存溢出的情况我还没有碰到过,这次有机会实践一下,准备试试,拿到了dump文件,压缩包300M,解压出来3G。该事件是发生在2023年,写这篇文件的是已经是2024年了,为什么会间隔这么久才写这篇文章,因为当时......
  • [错误代码] SQLSTATE[HY000] [1045] Access denied for user 'cs2021'@'localhost' (u
    错误分析错误代码:SQLSTATE[HY000][1045]Accessdeniedforuser'cs2021'@'localhost'(usingpassword:YES)错误类型:数据库连接错误错误原因:用户名或密码错误。数据库用户没有权限从 localhost 连接。MySQL服务未启动或配置问题。解决方案检查用户名和密码......
  • 易优cms系统报错SQLSTATE[42S22]: Column not found: 1054 Unknown column 'groupid'
    .检查数据库表结构确认表结构:首先确认相关表中是否存在 groupid 列。  DESCRIBE表名;将 表名 替换为实际的表名,例如 eyou_member 或 eyou_admin。2.修改查询语句检查查询语句:如果 groupid 列确实不存在,需要修改相关的查询语句。找到引发错误的查询......