力扣-Mysql-3328-查找每个州的城市 II(中等)

一、题目来源

3328. 查找每个州的城市 II - 力扣(LeetCode)

二、数据表结构

表:cities

+-------------+---------+
| Column Name | Type    | 
+-------------+---------+
| state       | varchar |
| city        | varchar |
+-------------+---------+
(state, city) 是这张表中值互不相同的列的组合。
这张表的每一行包含州名和其中的城市名。


三、需求

编写一个解决方案来找到 每个州 中的 所有城市 并且根据下列条件分析它们:

  • 用 逗号分隔 字符串组合每一个州的所有城市。
  • 只显示有 至少 3 个城市的州。
  • 只显示 至少有一个城市 以与 州名相同字母开头 的州。

返回结果表以字母匹配城市的数量 降序 排序,然后按州名称 升序 排序的结果表。

四、示例数据

输入:

cities 表:

+--------------+---------------+
| state        | city          |
+--------------+---------------+
| New York     | New York City |
| New York     | Newark        |
| New York     | Buffalo       |
| New York     | Rochester     |
| California   | San Francisco |
| California   | Sacramento    |
| California   | San Diego     |
| California   | Los Angeles   |
| Texas        | Tyler         |
| Texas        | Temple        |
| Texas        | Taylor        |
| Texas        | Dallas        |
| Pennsylvania | Philadelphia  |
| Pennsylvania | Pittsburgh    |
| Pennsylvania | Pottstown     |
+--------------+---------------+

输出:

+-------------+-------------------------------------------+-----------------------+
| state       | cities                                    | matching_letter_count |
+-------------+-------------------------------------------+-----------------------+
| Pennsylvania| Philadelphia, Pittsburgh, Pottstown       | 3                     |
| Texas       | Dallas, Taylor, Temple, Tyler             | 3                     |
| New York    | Buffalo, Newark, New York City, Rochester | 2                     |
+-------------+-------------------------------------------+-----------------------+

解释:

  • Pennsylvania:
    • 有 3 个城市(符合最低条件)
    • 所有的 3 个城市都以 'P' 开头(与州相同)
    • matching_letter_count = 3
  • Texas:
    • 有 4 个城市(符合最低条件)
    • 3 个城市 (Taylor, Temple, Tyler) 以 'T' 开头(与州相同)
    • matching_letter_count = 3
  • New York:
    • 有 4 个城市(符合最低条件)
    • 2 个城市 (Newark, New York City) 以 'N' 开头(与州相同)
    • matching_letter_count = 2
  • California 没有包含在输出表,因为:
    • 尽管它有 4 个城市(符合最低条件)
    • 没有城市以 'C' 开头(不符合字母匹配条件)
  • 注意:
  • 结果以 matching_letter_count 降序排序。
  • 当 matching_letter_count 持平(Texas 和 New York 都为 2),按州名字母序排序。
  • 每一行的城市也以字母序排序。


五、分析


1.文字分析
 

第一步:首先使用group_concat函数将每个州的城市使用逗号连接,并统计每个州的城市数量;

第二步:使用 left 获取城市名和州名的首字母,让它们相同,并统计城市名首字母和州名首字母相同的城市数量;

第三步:连接前两步得到的表,进行最终筛选,使cnt1>=3, cnt2>=1,cnt2即为所有的matching_letter_count,最终再根据m_l_c 降序, 州名升序进行排列。

2.图解


六、代码实现

with t1 AS (SELECTstate,group_concat(city order by city SEPARATOR ', ') as cities,COUNT(city) cnt1FROM citiesGROUP BY state
),t2 as(selectstate,count(city) as cnt2from citieswhere left(city,1) = left(state,1)group by state
)
SELECTdistinctt1.state,t1.cities,cnt2 as matching_letter_count
from t1,t2
where t1.state = t2.state and cnt1 >= 3 and cnt2 >= 1
ORDER BY matching_letter_count desc ,t1.state;



七、总结
 

本题需求为查询每个州的城市:

难点在于将每个州原本是列数据的城市,使用逗号分隔为一行数据输出。我们使用了 Group_Concat 聚合函数解决这个问题;

Group_Concat 函数是一个聚合函数,它可以将分组后的某一列的值按照指定的分隔符连接成一个字符串。在一些情况下,我们可以利用它来将多列的数据转换为一行中的字符串形式,虽然不是严格意义上的列转行,但在某些展示场景下是很有用的。

获取每个州以及城市的首字母使用了 Left 函数;

Left() 函数是一个用于字符串操作的函数。它的主要功能是从一个字符串的左边开始提取指定长度的子字符串,基本语法为 :Left(str , length)。其中str是要操作的原始字符串,length是要从左边提取的子字符串的长度。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Vue2:组件

Vue2:组件 非单文件组件定义注册使用 单文件组件 组件是Vue中最核心的内容,在编写页面时,将整个页面视为一个个组件,再把组件拼接起来,这样每个组件之间相互独立,有自己的结构样式,使页面编写思…

力扣 LeetCode 28. 找出字符串中第一个匹配项的下标(Day4:字符串)

解题思路: KMP算法 需要先求得最长相等前后缀,并记录在next数组中,也就是前缀表,前缀表是用来回退的,它记录了模式串与主串(文本串)不匹配的时候,模式串应该从哪里开始重新匹配。 next[ j - 1 ] 记录了 …

计算机网络 (1)互联网的组成

一、互联网的边缘部分 互联网的边缘部分由所有连接在互联网上的主机组成,这些主机又称为端系统(end system)。端系统可以是各种类型的计算机设备,如个人电脑、智能手机、网络摄像头等,也可以是大型计算机或服务器。端系…

智慧军营安防方案

1. 引言 智慧安防方案集成高清视频监控、智能分析与大数据管理,打造全方位安全防护体系。通过先进技术,提升预警与应急响应能力,确保安全无死角。 2. 视频监控技术 采用高清摄像设备与智能识别算法,实现全景监控与细节跟踪&#…

ABAP开发学习——ST05 ABAP SQL跟踪工具

操作步骤 第一步使用ST05之前,将要查的程序停留想要看的操作的前一步,这里想看到取数操作,所以停留在选择界面 第二步进入ST05 选择SQL Trace 然后激活 第三步去执行程序 第四步ST05取消激活 第五步查看操作 选完时间直接执行

AtCoder ABC378 A-D题解

比赛链接:ABC378 比较简单的一次 ABC。 Problem A: Code #include <bits/stdc.h> using namespace std; int main(){cin>>A[1]>>A[2]>>A[3]>>A[4];sort(A1,A5);if(A[1]A[2] && A[3]A[4])cout<<2<<endl;else{if(A[1]A[2]…

Windows上安装专业版IDEA2024并激活

1、IDEA官方下载 搜索IDEA官网点击进入&#xff0c;点击Download&#xff08;目前这个激活脚本只能激活2024.1.7&#xff0c;2024.2.x的版本都不能激活&#xff0c;2024.1.7版本已上传资源&#xff09;&#xff0c;如图&#xff1a; 2、开始安装 1&#xff09;、双击下载的.…

表达式求值问题(中缀转后缀,对后缀求值)详解

目录 实验题目 理解中缀和后缀表达式 问题分析 1转化为中缀表达式 2计算后缀表达式 完整代码 运行结果 实验题目 实验题目&#xff1a;表达式求值问题。这里限定的表达式求值问题是&#xff1a; 用户输入一个包含“”、“-”、“*”、“/”、正整数和圆括号的合法数学表…

AD22怎么按照板子形状铺铜

如何按照板子形状来铺铜&#xff1f; 选择铺铜管理器 选择板外形 我这里图里VCC没画就选择VCC&#xff0c; 你选什么层&#xff0c;就勾什么层 死铜移除勾选 效果如下&#xff1a;

【视觉SLAM】2-三维空间刚体运动的数学表示

读书笔记&#xff1a;学习空间变换的三种数学表达形式。 文章目录 1. 旋转矩阵1.1 向量运算1.2 坐标系空间变换1.3 变换矩阵与齐次坐标 2. 旋转向量和欧拉角2.1 旋转向量2.2 欧拉角 3. 四元数 1. 旋转矩阵 1.1 向量运算 对于三维空间中的两个向量 a , b ∈ R 3 a,b \in \R^3 …

研发费用资本化的意义

1.更真实地反映企业价值&#xff1a;研发费用是企业为创造未来经济利益而进行的投资&#xff0c;通过将其资本化并作为无形资产计入资产负债表&#xff0c;可以更真实地反映企业的资产总额和长期投资价值。这有助于投资者、债权人和其他利益相关者更准确地评估企业的财务状况、…

Ubuntu24.04安装Anaconda3+Pycharm

一、引言 重装系统已经过去一段时间了&#xff0c;现在安装一下 Anaconda 和 Pycharm。 参考连接&#xff1a; Ubuntu中安装Anaconda3和Pycharm 及其环境搭建Ubuntu18.04安装Pycharm教程ubuntu系统安装Anaconda及Pycharm在移动硬盘上搭建Ubuntu24.04深度学习环境&#xff08;…

稀疏矩阵(Sparse Matrix)及其存储格式详解

稀疏矩阵&#xff08;Sparse Matrix&#xff09;是线性代数和计算机科学中的一个重要概念&#xff0c;广泛应用于科学计算、工程模拟、图像处理、机器学习等多个领域。与稠密矩阵&#xff08;Dense Matrix&#xff09;相比&#xff0c;稀疏矩阵大部分元素为零&#xff0c;仅有少…

操作系统:页表中的页表项

操作系统&#xff1a;页表中的页表项 页表是操作系统用于跟踪进程使用的虚拟地址与系统内存中相应物理地址之间映射的数据结构。 页表项&#xff08;Page Table Entry&#xff0c;PTE&#xff09;是页表中的一个条目&#xff0c;用于存储有关特定内存页的信息。每个页表项包含…

Docker部署Kafka SASL_SSL认证,并集成到Spring Boot

1&#xff0c;创建证书和密钥 需要openssl环境&#xff0c;如果是Window下&#xff0c;下载openssl Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 还需要keytool环境&#xff0c;此环境是在jdk环境下 本案例所使用的账号密码均为&#xff1a; ka…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《基于改进容积卡尔曼滤波的含光伏配电网动态状态估计》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

jenkins使用cli发行uni-app到h5

官网文档HBuilderX 文档 首先确定是否存在环境变量 正常情况cmd中执行cli 如果提示 cli 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。请先配置环境变量 Freestyle Project项目在Build Steps中增加Execute Windows batch command命令如下 d: cd D:\devsof…

FMEA 在新兴技术领域(如量子计算、人工智能芯片等)的应用挑战与机遇

【大家好&#xff0c;我是唐Sun&#xff0c;唐Sun的唐&#xff0c;唐Sun的Sun。】 摘要&#xff1a; 本文深入探讨了 FMEA&#xff08;失效模式及后果分析&#xff09;在如量子计算、人工智能芯片等新兴技术领域的应用所面临的挑战与机遇。随着科技的飞速进步&#xff0c;新兴技…

websocket身份验证

websocket身份验证 前言 上一集我们就完成了websocket初始化的任务&#xff0c;那么我们完成这个内容之后就应该完成一个任务&#xff0c;当客户端与服务端连接成功之后&#xff0c;客户端应该主动发起一个身份认证的消息。 身份认证proto 我们看一眼proto文件的内容。 我…

Spire.PDF for .NET【页面设置】演示:复制 PDF 文档中的页面

在某些情况下&#xff0c;我们需要创建 PDF 文档中现有页面的副本&#xff0c;而不是复制整个文件&#xff0c;特别是如果我们必须创建某个页面的数百份副本&#xff0c;那么逐个复制页面可能会很繁琐。本文演示了如何使用 Spire.PDF 复制 PDF 文档中的页面并一次创建多个副本的…