mysql做数据统计图表常用的sql语句 部门人数 工龄 学历 年龄 性别 在职人员 兴趣分析查询

做统计有时候挺头疼的,sql改来改去还是达不到想要的效果,这里分享一下最近写的sql,感兴趣的朋友可以看看了解一下,sql语句代码都有注释。

这里只分享sql查询语句,前端图表用的是Echarts。

首先看一下统计的效果图

在这里插入图片描述

1、部门人员分析

SELECTdept.id id,dept.NAME key_name,COUNT( pe.id ) value_count,dept.deleted 
FROMsystem_dept dept #按部门表查询LEFT JOIN system_company_personal pe ON dept.id = pe.dept_id 
WHEREdept.id != 100 AND dept.STATUS = 0 AND dept.deleted = 0 AND pe.deleted = 0 
GROUP BYdept.id,dept.NAME

2、工龄分布查询(entry_time 为入职时间,格式为datetime)

SELECT-- 使用CASE语句进行条件判断,根据不同的工龄范围分类CASEWHEN DATEDIFF( CURRENT_DATE, entry_time ) / 365 < 1 THEN '1年以下' WHEN DATEDIFF( CURRENT_DATE, entry_time ) / 365 >= 1 AND DATEDIFF( CURRENT_DATE, entry_time ) / 365 < 3 THEN '1-3年'WHEN DATEDIFF( CURRENT_DATE, entry_time ) / 365 >= 3 AND DATEDIFF( CURRENT_DATE, entry_time ) / 365 < 5 THEN '3-5年'WHEN DATEDIFF( CURRENT_DATE, entry_time ) / 365 >= 5 AND DATEDIFF( CURRENT_DATE, entry_time ) / 365 < 10 THEN '5-10年'WHEN DATEDIFF( CURRENT_DATE, entry_time ) / 365 >= 10 AND DATEDIFF( CURRENT_DATE, entry_time ) / 365 < 15 THEN '10-15年'WHEN DATEDIFF( CURRENT_DATE, entry_time ) / 365 >= 15 THEN '15年以上' END AS key_name,COUNT(*) AS value_count 
FROMsystem_company_personal 
WHEREdeleted = 0 GROUP BY-- 按照工龄范围分组,以便统计每个范围的人数CASEWHEN DATEDIFF( CURRENT_DATE, entry_time ) / 365 < 1 THEN '1年以下'WHEN DATEDIFF( CURRENT_DATE, entry_time ) / 365 >= 1 AND DATEDIFF( CURRENT_DATE, entry_time ) / 365 < 3 THEN '1-3年'WHEN DATEDIFF( CURRENT_DATE, entry_time ) / 365 >= 3 AND DATEDIFF( CURRENT_DATE, entry_time ) / 365 < 5 THEN '3-5年'WHEN DATEDIFF( CURRENT_DATE, entry_time ) / 365 >= 5 AND DATEDIFF( CURRENT_DATE, entry_time ) / 365 < 10 THEN '5-10年'WHEN DATEDIFF( CURRENT_DATE, entry_time ) / 365 >= 10 AND DATEDIFF( CURRENT_DATE, entry_time ) / 365 < 15 THEN '10-15年'WHEN DATEDIFF( CURRENT_DATE, entry_time ) / 365 >= 15 THEN '15年以上' END ORDER BY-- 根据工龄范围进行升序排序,这里通过自定义排序规则来实现FIELD( key_name, '1年以下', '1-3年', '3-5年', '5-10年', '10-15年', '15年以上' );

3、学历分布

SELECTCASEWHEN education_background_type = 0  THEN '小学'WHEN education_background_type = 1  THEN '初中'WHEN education_background_type = 2  THEN '高中'WHEN education_background_type = 3  THEN '大专'WHEN education_background_type = 4  THEN '本科'WHEN education_background_type = 5  THEN '硕士'WHEN education_background_type = 6  THEN '博士'END AS key_name,COUNT( * ) value_count
FROMsystem_company_personal
whereeducation_background_type is not null and deleted = 0
GROUP BYeducation_background_type

4、年龄分布(birthday出生日期,格式为datetime)

SELECT-- 使用CASE语句进行条件判断,根据不同的年龄范围分类CASEWHEN TIMESTAMPDIFF(YEAR, birthday, CURRENT_DATE) < 25 THEN '25以下'WHEN TIMESTAMPDIFF(YEAR, birthday, CURRENT_DATE) >= 25 AND TIMESTAMPDIFF(YEAR, birthday, CURRENT_DATE) < 30 THEN '26-30'WHEN TIMESTAMPDIFF(YEAR, birthday, CURRENT_DATE) >= 30 AND TIMESTAMPDIFF(YEAR, birthday, CURRENT_DATE) < 40 THEN '31-40'WHEN TIMESTAMPDIFF(YEAR, birthday, CURRENT_DATE) >= 40 AND TIMESTAMPDIFF(YEAR, birthday, CURRENT_DATE) < 50 THEN '41-50'WHEN TIMESTAMPDIFF(YEAR, birthday, CURRENT_DATE) >= 50 THEN '51以上'END AS key_name,COUNT(*) AS value_count
FROMsystem_company_personal
wherebirthday IS NOT NULL AND deleted = 0GROUP BY-- 按照年龄范围分组,以便统计每个范围的人数CASEWHEN TIMESTAMPDIFF(YEAR, birthday, CURRENT_DATE) < 25 THEN '25以下'WHEN TIMESTAMPDIFF(YEAR, birthday, CURRENT_DATE) >= 25 AND TIMESTAMPDIFF(YEAR, birthday, CURRENT_DATE) < 30 THEN '26-30'WHEN TIMESTAMPDIFF(YEAR, birthday, CURRENT_DATE) >= 30 AND TIMESTAMPDIFF(YEAR, birthday, CURRENT_DATE) < 40 THEN '31-40'WHEN TIMESTAMPDIFF(YEAR, birthday, CURRENT_DATE) >= 40 AND TIMESTAMPDIFF(YEAR, birthday, CURRENT_DATE) < 50 THEN '41-50'WHEN TIMESTAMPDIFF(YEAR, birthday, CURRENT_DATE) >= 50 THEN '51以上'ENDORDER BY-- 根据年龄范围进行升序排序,这里通过自定义排序规则来实现FIELD(key_name, '25以下', '26-30', '31-40', '41-50', '51以上');

5、性别比例

SELECTCASEWHEN sex = 0 THEN '未知'WHEN sex = 1 THEN '男'WHEN sex = 2 THEN '女'END AS key_name,COUNT(*) AS value_count
FROMsystem_company_personal
wheresex is not null and deleted = 0
GROUP BY sex

6、试用和正式人员

SELECTCASEWHEN status = 1 THEN '试用'WHEN status = 2 THEN '正式'END AS key_name,COUNT(*) AS value_count
FROMsystem_company_personal
wherestatus is not null and deleted = 0 and (status = 1 or status = 2)
GROUP BY status

7、兴趣爱好分析

这条 SQL 语句的主要目的是从 system_company_personal 表中提取出每个人的兴趣爱好(存储在 hobbies 字段中,以逗号分隔的字符串形式),将这些兴趣爱好拆分后进行统计,最后找出出现次数大于等于 2 的兴趣爱好及其出现次数,并按照出现次数降序排列。

SELECTkey_name,COUNT(*) AS value_count
FROM (SELECTTRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(hobbies, ',', n.n), ',', -1)) AS key_nameFROMsystem_company_personalJOIN(SELECT 1 AS n UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10UNION SELECT 11 UNION SELECT 12 UNION SELECT 13 UNION SELECT 14 UNION SELECT 15) nwherehobbies IS NOT NULL and deleted = 0 and (status = 1 or status = 2)AND LENGTH(hobbies) - LENGTH(REPLACE(hobbies, ',', '')) >= n.n - 1
) AS split_hobbiesGROUP BY key_name# HAVING条件可按照自己需求该,我这里是要数量大于2的HAVINGvalue_count >= 2ORDER BYvalue_count DESC;

好了,就先写到这里吧,有不理解的或者不对的欢迎各位大佬留言指正。

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

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

相关文章

无人机之姿态融合算法篇

无人机的姿态融合算法是无人机飞行控制中的核心技术之一&#xff0c;它通过将来自不同传感器的数据进行融合&#xff0c;以实现更加精确、可靠的姿态检测。 一、传感器选择与数据预处理 无人机姿态融合算法通常依赖于多种传感器&#xff0c;包括加速度计、陀螺仪、磁力计等。这…

phpstudy 使用php8.2.9版本报错问题

phpstudy 使用php8.2.9版本报错问题 1、如果php8的扩展控制面板开启无效的话&#xff0c;可以手动开启试试 2、php有报错日志&#xff1a; Fatal error: Directive ‘track_errors’ is no longer available in PHP in Unknown on line 0 在切换php版本到更高版本时在终端查…

SpringBoot开发——SpringBoot3.3 中实现多端口监听

文章目录 1、项目环境与依赖配置2、配置多端口监听3、编写配置类实现多端口监听4、为每个端口创建独立的配置类4.1 8081 端口配置类4.2 8082 端口配置类 5、控制器类定义5.1 8080 端口的控制器&#xff08;保持原有配置&#xff09;5.2 8081 端口的控制器5.3 8082 端口的控制器…

Git分支

目录​​​​​​​ 一、分支是什么 二、查看、创建分⽀(git branch) 查看分支 创建分支 三、切换分支(git checkout&#xff0c;git checkout -b) 四、合并分支(git merge、git log查看合并情况) 五、删除分支&#xff08;git branch -d []&#xff09; 六、合并冲突&…

sigmoid和softmax有什么区别,softmax的本质是最大熵?

本文理论依据王木头的视频&#xff1a; softmax是为了解决归一问题凑出来的吗&#xff1f;和最大熵是什么关系&#xff1f;最大熵对机器学习为什么非常重要&#xff1f;_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1cP4y1t7cP/?spm_id_from333.999.0.0&vd_sourc…

stm32 挂死定位(死循环)

1&#xff0c;调式程序时先看初始化和轮询点灯流程&#xff0c;如果灯没有闪烁则表明程序进入了死循环。 2&#xff0c;程序调式进入调式debug接口&#xff1b; 3&#xff0c;打断点依次运行&#xff1b; 4&#xff0c;查看寄存器&#xff1b; LR在异常后通常为0xFFFFFFFx&am…

ZFC in Lean 之 前集及其成员关系(S, ∈)是良创的(Well-founded)

基于前文&#xff0c;对前集&#xff08;S&#xff0c;pre-set&#xff09;、其成员关系&#xff08;∈&#xff0c;membership&#xff09;&#xff0c;以及良创&#xff08;Well-Founded&#xff09;的定义&#xff0c;此文&#xff0c;分析&#xff08;S, ∈&#xff09;是良…

【暴刷力扣】59. 螺旋矩阵 II

题目 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 题解 leetcode 大部分题解写的不知道都是什么——代码非常杂乱。 还是直接放上紫书&#xff08;《算法竞赛入门指南》&#xff09;…

vue3+ts+element-ui实现的可编辑table表格组件 插入单行多行 组件代码可直接使用

最近需求越来越离谱&#xff0c;加班越来越严重&#xff0c;干活的牛马也越来越卑微。写了一个可编辑表格&#xff0c;并已封装好组件&#xff0c;可直接使用。 基于这位大佬的 动态表格自由编辑 方法和思路&#xff0c;于是参考和重写了表格&#xff0c;在基础上增加和删除了…

zxing生成、解析二维码,条形码

1、maven依赖 <!--zxing依赖--><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.1.0</version></dependency><dependency><groupId>com.google.zxing</groupI…

JQuery设置Cookie操作,设置、获取、删除三种方法

//触发条件 当用户点击或者操作时需要设置cookie时 //方法里面定义了三个处理cookie的方法 $(document).ready(function(e) {$("#btnsetcookie").click(function() {setCookie("Demo", "我的示例Cookie数据", 2); //设置cookie});$("#btn…

bert-base-uncased使用

1.下载模型 https://github.com/google-research/bert?tabreadme-ov-file 2.下载config.json和pytorch_model.bin https://huggingface.co/google-bert/bert-base-uncased/tree/main 3.解压缩到同一文件夹 4.代码测试 from transformers import BertModel,BertTokenizerBER…

【人工智能】阿里云PAI平台DSW实例一键安装Python脚本

阿里云的DSW实例自带的镜像很少而且并不好用&#xff0c;所以我在这里写三个一键编译安装Python3.8&#xff0c;Python3.9&#xff0c;Python3.10的Shell脚本。 安装Python3.8 wget https://www.smallbamboo.cn/install_python38.sh && chmod x install_python38.sh …

每日科技资讯:2024年11月09日【龙】农历十月初九 ---文末送书

目录 1.史上最强游戏CPU&#xff01;9800X3D首发评测2.苹果喊话iPhone 13和14钉子户&#xff1a;16方方面面都升级了3.加拿大政府下令 TikTok 关闭该国业务&#xff0c;但应用仍可以继续访问4.OpenAI 刚刚花了超过 1000 万美元购买了Chat.com5.Max 加入打击密码共享行列6.微软可…

「实战应用」如何用图表控件LightningChart .NET在WPF中制作表格?(一)

LightningChart .NET完全由GPU加速&#xff0c;并且性能经过优化&#xff0c;可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D&#xff0c;高级3D&#xff0c;Polar&#xff0c;Smith&#xff0c;3D饼/甜甜圈&#xff0c;地理地图和GIS图表以及适用于科…

大数据学习11之Hive优化篇

1.Hive压缩 1.1概述 当前的大数据环境下&#xff0c;机器性能好&#xff0c;节点更多&#xff0c;但并不代表我们无条件直接对数据进行处理&#xff0c;在某些情况下&#xff0c;我们依旧需要对数据进行压缩处理&#xff0c;压缩处理能有效减少存储系统的字节读取数&#xff0…

【Linux】【Vim】多文件编辑与分屏

多文件编辑 编辑另一个文件文件列表分屏vimdiff文件跳转 编辑另一个文件 除了为每一个要编辑的文件运行一次 Vim 之外&#xff0c;还可以在当前 Vim 中开始编辑另一个文件。 :edit foo.txtVim 会关闭当前正在编辑的文件打开指定的新文件进行编辑。如果当前文件还有未存盘的内容…

Fastify Swagger:自动化API文档生成与展示

在现代软件开发中&#xff0c;API文档的生成和维护是一个不可或缺的环节。Fastify Swagger 是一个专为 Fastify 框架设计的插件&#xff0c;它能够自动生成符合 Swagger&#xff08;OpenAPI v2 或 v3&#xff09;规范的文档&#xff0c;从而帮助开发者轻松创建和维护API文档。本…

SQL,力扣题目262,行程和用户

一、力扣链接 LeetCode_262 二、题目描述 表&#xff1a;Trips ----------------------- | Column Name | Type | ----------------------- | id | int | | client_id | int | | driver_id | int | | city_id | int | | status …

【复旦微FM33 MCU 开发指南】ADC

前言 本系列基于复旦微FM33LC0系列单片机的DataSheet编写&#xff0c;旨在提供手册解析和开发指南。 本文章及本系列其他文章将持续更新&#xff0c;本系列其它文章请跳转【复旦微FM33 MCU 外设开发指南】总集篇 本文章最后更新日期&#xff1a;2024/11/09 全文字数&#xff…