【sql】按照数据的日期/天 ,对入库数据做数量分类

发布于:2025-05-15 ⋅ 阅读:(11) ⋅ 点赞:(0)

我今天写SQL,发现我的时间的写法是“年-月-日 时:分:秒 ”,

在这里插入图片描述

我想要按照“年-月-日”分类,看看我每一天的入库数据量是多少,然后做出一个报表出来。

sql对时间的处理:

SELECT 
    DATE(update_time) AS date_only,
    COUNT(*) AS record_count
FROM table_name
GROUP BY DATE(update_time)
ORDER BY DATE(update_time);

其中,update_time是日期列,table_name 是表名

结果:
在这里插入图片描述
然后用python对数据,加入图表可视化:

简单粗暴版:

import pandas as pd
import matplotlib.pyplot as plt
from sqlalchemy import create_engine

# 连接数据库并获取数据
engine = create_engine('mysql+pymysql://root:XXX@localhost:3306/test')
df = pd.read_sql("""
SELECT 
    DATE(update_time) AS date_only,
    COUNT(*) AS record_count
FROM jd_upate_price
GROUP BY DATE(update_time)
ORDER BY DATE(update_time);
""", engine)

# 生成柱形图
plt.figure(figsize=(12, 6))
df = df.dropna(subset=['date_only'])

plt.bar(df['date_only'], df['record_count'], width=0.8)
plt.title('数据入库日期仪表')
plt.xlabel('日期')
plt.ylabel('数量')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

不过效果长得一般:
在这里插入图片描述

中文字符会显示不出来,文字的横坐标和纵坐标的文字要用英文标注

长得有点丑,也可以用seaborn 来美化一下:

import seaborn as sns
ax = sns.barplot(x=df['date_only'], y=df['record_count'], color='skyblue') #可以给柱状图修改颜色

(替换上面的plt.bar(df['date_only'], df['record_count'], width=0.8))

emm,看得顺眼多了
在这里插入图片描述
不过日期全部挤在一起了,只想显示 日期的月和日的格式,稍微改一下:

import matplotlib.dates as mdates
ax = sns.barplot(x=df['date_only'], y=df['record_count'], color='skyblue')
# 设置日期格式
ax.xaxis.set_major_formatter(mdates.DateFormatter('%m-%d'))

效果:
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到