【数据分析面试】6.计算对话总数(SQL)

在这里插入图片描述

题目:计算对话总数

给定了名为 messenger_sends 的消息发送表格,找出总共有多少个唯一的对话。

注:在某些记录中,receiver_idsender_id 从初始消息中互换了。这些记录应视为同一个对话。

示例:

输入:

messenger_sends 表格

列名类型
id整数
receiver_id整数
sender_id整数

输出:

列名类型
total_conv_threads整数

答案

解题思路

要计算总共有多少个对话,首先需要考虑到对话是由一系列消息组成的,并且在某些情况下,消息的发送者和接收者可能会被交换。因此,我们需要将这些交换的情况考虑在内,将发送者和接收者的ID合并在一起,然后对这些合并后的ID进行计数。

也就是说,如果一条消息的receiver_id是A,sender_id是B,那么这条消息和receiver_id是B,sender_id是A的消息属于同一个对话。

我们可以创建一个新的列,将receiver_idsender_id按照由大到小的顺序组合起来。然后,我们可以对这个新列进行去重统计,得到的结果就是对话的总数量。

答案代码

SELECT--计算唯一对话总数COUNT(DISTINCT thread_id) AS total_conv_threads
FROM(--重新组合对话双方idSELECTCASEWHEN sender_id < receiver_id THEN CONCAT(sender_id, '_', receiver_id)ELSE CONCAT(receiver_id, '_', sender_id)END AS thread_idFROMmessenger_sends) AS threads;

CONCAT()用法总结

在MySQL中,CONCAT() 函数用于将两个或多个字符串连接成一个更长的字符串。它接受一个或多个字符串作为参数,并返回连接后的结果。例如:

SELECT CONCAT('Hello', ' ', 'World'); -- 输出:Hello WorldSELECT CONCAT(first_name, ' ', last_name) AS full_name FROM users; -- 将 first_name 和 last_name 字段连接成一个 full_name 字段SELECT CONCAT('The user with ID ', user_id, ' has email: ', email) AS user_info FROM users; -- 使用字段值与常量字符串连接成一个信息字符串

MySQL中, CONCAT()函数主要用于的字符串连接,而Python中的字符串连接使用 + 操作符或 str.join() 方法,Pandas的pd.concat()函数则用于用于合并 Pandas 数据结构,如 DataFrame 或 Series 对象。

代码汇总

--题目:求对话数量
-- 创建messenger_sends表格
CREATE TABLE messenger_sends (id INT AUTO_INCREMENT PRIMARY KEY,receiver_id INT,sender_id INT
);--插入数据
INSERT INTO messenger_sends(receiver_id, sender_id) VALUES
(1, 2),
(2, 1),
(1, 2),
(1, 2),
(2, 1),
(3, 1),
(3, 1),
(3, 2),
(4, 5),
(5, 4),
(4, 5),
(5, 1),
(5, 1),
(5, 1),
(6, 7),
(8, 7),
(7, 9),
(7, 10);--答案:求对话数量
SELECTCOUNT(DISTINCT thread_id) AS total_conv_threads
FROM(SELECTCASEWHEN sender_id < receiver_id THEN CONCAT(sender_id, '_', receiver_id)ELSE CONCAT(receiver_id, '_', sender_id)END AS thread_idFROMmessenger_sends) AS threads;

在这里插入图片描述

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

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

相关文章

训练营十六天(二叉树part03)

104.二叉树的最大深度 力扣题目链接(opens new window) 题目 给定一个二叉树&#xff0c;找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例&#xff1a; 给定二叉树 [3,9,20,null,null,15,7]&…

挑选人力资源管理系统,专家推荐的6款必看!

在当今数字化时代&#xff0c;人力资源管理系统已成为企业高效运营和持续发展的重要工具。本文为您介绍的6款好用的人力资源管理系统有Zoho People、金蝶人力云、Workday、北森eHR、用友人力云、易路&#xff0c;帮助您找到最适合自己企业的解决方案。 一、Zoho People Zoho P…

构建开源可观测平台

企业始终面临着确保 IT 基础设施和应用程序全年可用的压力。现代架构&#xff08;容器、混合云、SOA、微服务等&#xff09;的复杂性不断增长&#xff0c;产生大量难以管理的日志。我们需要智能应用程序性能管理 (APM) 和可观察性工具来实现卓越生产并满足可用性和正常运行时间…

《搜广推算法指南》(2024版) 重磅发布!

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学&#xff0c;针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 结合…

从头开发一个RISC-V的操作系统(五)汇编语言编程

文章目录 前提RISC-V汇编语言入门RISC-V汇编指令总览汇编指令操作对象汇编指令编码格式add指令介绍无符号数 练习参考链接 目标&#xff1a;通过这一个系列课程的学习&#xff0c;开发出一个简易的在RISC-V指令集架构上运行的操作系统。 前提 这个系列的大部分文章和知识来自于…

【C++】模拟实现红黑树(插入)

目录 红黑树的概念 红黑树的性质 红黑树的调整情况 红黑树的模拟实现 枚举类型的定义 红黑树节点的定义 插入函数的实现 旋转函数的实现 左旋 右旋 自检函数的实现 红黑树类 红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储…

【剑指offr--C/C++】JZ7 重建二叉树

一、题目 二、思路及代码 前序遍历&#xff1a;中、左、右。所以前序遍历的第一个节点是树的根节点&#xff0c;第二个节点是左子树的根节点。。。。 中序遍历&#xff1a;左、中、右。树的根节点在中间某处 我们可以根据二者的特点结合一下&#xff1a;对于前序遍历序列{1,2,4…

查看MySQL版本的方式

文章目录 一、使用cmd输入命令行查看二、在mysql客户端服务器里查询 一、使用cmd输入命令行查看 1、打开 cmd &#xff0c;输入命令行&#xff1a; mysql --version 2、还是打开cmd&#xff0c;输入命令行&#xff1a;mysql -V (注意了&#xff0c;此时的V是个大写的V) 二、…

海外问卷调查项目拆解(操作全流程演示)保姆级攻略具体操作

海外问卷调查是怎么做的&#xff1f;好做吗&#xff1f; 关于这个问题&#xff0c;不管我说好做、或者不好做&#xff0c;都并不能解决问题&#xff1b; 所以&#xff0c;这篇文章直接把做题的全过程展现给你看&#xff0c;你自己去真实地感受一下&#xff0c;这个玩意儿到底…

华媒舍:3个科学指导,协助油管大V写下爆款文章

油管&#xff08;YouTube&#xff09;作为一个重要的视频分享平台&#xff0c;吸引了很多的观众和原创者。作为一位油管大V&#xff0c;你可能会一直在努力提升自己的文章质量以吸引更多的观众和订阅者。下面我们就为您提供三个科学指导&#xff0c;帮助自己写下更具有爆品发展…

浅析JavaWeb内存马基础原理与查杀思路

文章目录 前言Java内存马内存马分类&原理JavaWeb三大组件注入Servlet内存马注入Filter型内存马JAVA Agent内存马 哥斯拉木马0x01 WebShell0x02 MemShell0x03 FilterShell0x04 Arthas排查0x05 scanner查杀 总结 前言 几年前写过《Web安全-一句话木马》&#xff0c;主要介绍…

stargan项目实战及源码解读

数据及代码链接见文末 ​​​​​​​论文解析&#xff1a;Star GAN论文解析-CSDN博客 1.测试模块效果与实验分析 测试数据需要准备两个文件夹src&#xff08;源&#xff09;和ref&#xff08;目标&#xff09;&#xff0c;这两个文件夹下的文件夹名称代表各个domain。 运行测…