A1009(25)

形式上跟1002太像了,然后这个是升级版,坑点在如何把前面的数据和后面的数据结合起来,因为乘法需要每一项相乘,所以用结构体表示最好了,存储ans时可以考虑1002的方法,存在一个double数组里,这样输出就又回到了1002的解决办法,代码如下

#include<cstdio>
#include<iostream>
using namespace std;
const int maxn=2010;
struct node{
 int exp;
 double con;
}p[maxn];
double ans[maxn]={};
int main()
{
   int  k,m,count=0;
   cin>>k;
   for (int i=0;i<k;i++)
   {
    scanf("%d %lf",&p[i].exp,&p[i].con);
   }
   cin>>m;
   for (int i=0;i<m;i++)
   {
    int a;
    double b;
    scanf("%d %lf",&a,&b);
    for (int j=0;j<k;j++)
    {
      ans[p[j].exp+a]+=p[j].con*b;
 }
   }
   for (int i=0;i<maxn;i++)
   {
    if (ans[i]!=0)
    count++;
   }
    cout<<count;
    for (int i=maxn-1;i>=0;i--)
    {
     if (ans[i]!=0)
     printf(" %d %.1f",i,ans[i]);
 }
}
CREATE TABLE [dbo].[T_GXJ_FD]( [datime] [nvarchar](14) NOT NULL, [A1001] [numeric](11, 3) NULL, [A1002] [numeric](11, 3) NULL, [A1003] [numeric](11, 3) NULL, [A1004] [numeric](11, 3) NULL, [A1005] [numeric](11, 3) NULL, [A1006] [numeric](11, 3) NULL, [A1007] [numeric](11, 3) NULL, [A1008] [numeric](11, 3) NULL, [A1009] [numeric](11, 3) NULL, [A1010] [numeric](11, 3) NULL, [A1011] [numeric](11, 3) NULL, CONSTRAINT [PK_T_GXJ_FD] PRIMARY KEY CLUSTERED ( [datime] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] 已知前面sqlserver数据库表格T_GXJ_FD中,[datime]存储的是代表时间的值:如20250930174948,其中20250930代表的是2025年9月30日,174948代表的是17点49分48秒,[A1001] [numeric](11, 3) NULL, [A1002] [numeric](11, 3) NULL, [A1003] [numeric](11, 3) NULL, [A1004] [numeric](11, 3) NULL, [A1005] [numeric](11, 3) NULL, [A1006] [numeric](11, 3) NULL, [A1007] [numeric](11, 3) NULL, [A1008] [numeric](11, 3) NULL, [A1009] [numeric](11, 3) NULL, [A1010] [numeric](11, 3) NULL, [A1011] [numeric](11, 3) NULL,存储为[datime]时刻所对应的值,旧表格T_GXJ_FD中的数据是5分钟更新一次的, 如何在SQLSERVER上建新表T_GXJ_FD_shift并编写代码,将datime时刻分为夜班,白班;[A1001]白班对应的值为白班最后时刻对应的值减去白班最初时刻对应的值,同样夜班对应的值为夜班最后时刻对应的值减去夜班最初时刻对应的值,将白班和夜班所对应的值的和存在一个日值字段中,并将每日的值进行月累计单独存在一个字段中,[A1002]至[A1011]对应班次的值,日值,月累计值获取与[A1001]一致,新表T_GXJ_FD_shift中的值随旧表更新而更新,其中夜班、白班和天的区分规则为:假设今天为2025-09-25,则2025-09-25的夜班为datime所对应的:20250924200000至20250925075959;2025-09-25的白班为:20250925080000至20250925195959;天为20250924200000至20250925195900;请写出代码进行建表并处理,并将日期如2025-09-25存储为[date] NOT NULL格式,因为数据是不断更新的,所以最近班次出现对应的数据也在更新,如何在SQLSERVER中实现将旧表的数据按班和天和月累计存到新表中,并进行更新,请写出详细的流程,写出一个较好的具体流程就可以了,不要写出对比方案。注意,datime的格式为[datime] [nvarchar](14) NOT NULL,存储的内容样式为20250928054001,而在新表中,日期存储为[date] NOT NULL格式即2025-09-28。
10-05
CREATE TABLE [dbo].[T_GXJ_FD]( [datime] [nvarchar](14) NOT NULL, [A1001] [numeric](11, 3) NULL, [A1002] [numeric](11, 3) NULL, [A1003] [numeric](11, 3) NULL, [A1004] [numeric](11, 3) NULL, [A1005] [numeric](11, 3) NULL, [A1006] [numeric](11, 3) NULL, [A1007] [numeric](11, 3) NULL, [A1008] [numeric](11, 3) NULL, [A1009] [numeric](11, 3) NULL, [A1010] [numeric](11, 3) NULL, [A1011] [numeric](11, 3) NULL, CONSTRAINT [PK_T_GXJ_FD] PRIMARY KEY CLUSTERED ( [datime] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] 已知前面sqlserver数据库表格已经存在历史数据,例如T_GXJ_FD中,[datime]存储的是代表时间的字符串值:如20250930174948,其中20250930代表的是2025年9月30日,174948代表的是17点49分48秒,[A1001] [numeric](11, 3) NULL, [A1002] [numeric](11, 3) NULL, [A1003] [numeric](11, 3) NULL, [A1004] [numeric](11, 3) NULL, [A1005] [numeric](11, 3) NULL, [A1006] [numeric](11, 3) NULL, [A1007] [numeric](11, 3) NULL, [A1008] [numeric](11, 3) NULL, [A1009] [numeric](11, 3) NULL, [A1010] [numeric](11, 3) NULL, [A1011] [numeric](11, 3) NULL,分别为存储时刻[datime]所对应的值,这些值正常情况下是随时间是一直变大的,数据重新累计除外,表格T_GXJ_FD中的数据是5分钟就存入一组数据并更新一次的, 如何在SQLSERVER上建新表T_GXJ_FD_shift并编写代码,将datime时刻分为夜班,白班,日;[A1001]白班对应的值在数据不清零的情况下为白班最后时刻对应的值减去白班最初时刻对应的值即白班对应的最大值减去白班对应的最小值,当存在数据清零的情况下,白班最后时刻对应的值减去白班最初时刻对应的值为负数,此时应进行判断,将在白班期间的值进行分段,先计算清零前的最大值减去对应的最小值,再计算清零后的最大值减去对应的最小值,然后计算再相加作为白班值,同样夜班对应的值为夜班最后时刻对应的值减去夜班最初时刻对应的值即夜班对应的最大值减去夜班对应的最小值,当夜班存在数据清零的情况时,可能夜班最后时刻对应的值减去夜班最初时刻对应的值为负数,此时应进行判断,将在夜班期间的值进行分段,先计算清零前的最大值减去对应的最小值,再计算清零后的最大值减去对应的最小值,然后计算再相加作为夜班值。将白班与夜班所对应的值的和存在一个日值字段中,并将每月一日开始每日的值进行月累计单独存在一个字段中。[A1002]、[A1003]、[A1004]、[A1005]、[A1006]、[A1007]、[A1008]、[A1009]、[A1010]、[A1011]对应班次的值、日的值、月累计值获取与[A1001]的一致,新表T_GXJ_FDshift中的值随表T_GXJ_FD更新而更新,其中夜班、白班和日的区分规则为:假设今天为2025-09-25,则2025-09-25的夜班为datime所对应的:20250924200000至20250925075959;2025-09-25的白班为:20250925080000至20250925195959;日为20250924200000至20250925195900;请写出代码进行建表并处理,并将日期如2025-09-25存储为[date] NOT NULL格式,因为数据是不断更新的,所以对应的数据也在更新,如何在SQLSERVER中实现将表T_GXJ_FD的数据按夜班、白班、日和月累计存到新表中,并进行更新,请写出详细的流程,写出一个较好的具体流程就可以了,不要写出对比方案。注意,datime的格式为[datime] [nvarchar](14) NOT NULL,存储的内容样式为20250928054001,而在新表中,日期存储为[date] NOT NULL格式即2025-09-28。
最新发布
10-14
from flask import Flask, render_template from pyecharts import options as opts from pyecharts.charts import Bar, Pie, Rose, Scatter from pyecharts.commons.utils import JsCode from pyecharts.globals import ThemeType app = Flask(__name__) # 任务一:条形图呈现"Top10城市商家数量" @app.route("/task1") def task1(): # 模拟数据 cities = ["北京", "上海", "广州", "深圳", "成都", "杭州", "重庆", "武汉", "西安", "苏州"] counts = [12500, 11800, 9800, 9500, 8700, 8500, 8200, 8000, 7800, 7500] # 打印控制台输出 print("==任务一:Top10城市商家数量==") for i, (city, count) in enumerate(zip(cities, counts), 1): print(f"=={i}.城市:{city},商家{count}个==") # 创建条形图 bar = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) .add_xaxis(cities) .add_yaxis("商家数量", counts) .reversal_axis() .set_global_opts( title_opts=opts.TitleOpts(title="城市商家数量 Top10"), xaxis_opts=opts.AxisOpts(name="商家数量"), yaxis_opts=opts.AxisOpts(name="城市名称"), ) ) return render_template("pyecharts.html", chart=bar.dump_options()) # 任务二:柱状图呈现审核效率 @app.route("/task2") def task2(): # 模拟数据 auditors = ["A1001", "A1002", "A1003", "A1004", "A1005", "A1006", "A1007", "A1008", "A1009", "A1010"] names = ["张三", "李四", "王五", "赵六", "钱七", "孙八", "周九", "吴十", "郑十一", "王十二"] counts = [1250, 1180, 980, 950, 870, 850, 820, 800, 780, 750] # 打印控制台输出 print("\n==任务二:Top10明星审核员==") for i, (auditor, count) in enumerate(zip(auditors, counts), 1): print(f"=={i}.二级审核人id:{auditor},审批数量:{count}条==") # 创建柱状图 bar = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) .add_xaxis(names) .add_yaxis("审核记录数", counts) .set_global_opts( title_opts=opts.TitleOpts(title="Top10明星审核员"), xaxis_opts=opts.AxisOpts(name="审核人姓名"), yaxis_opts=opts.AxisOpts(name="审核记录数"), ) ) return render_template("pyecharts.html", chart=bar.dump_options()) # 任务三:双饼图呈现业务包属性占比 @app.route("/task3") def task3(): # 模拟数据 categories = ["大客户", "白领", "小客户", "高校", "家庭", "其他"] beijing_data = [3200, 2800, 2500, 1800, 1500, 700] shenzhen_data = [2800, 3100, 2200, 1600, 1200, 600] # 打印控制台输出 print("\n==任务三:北京与深圳商户业务包属性占比==") print("==北京:") for i, (category, count) in enumerate(zip(categories, beijing_data), 1): print(f"=={i}.商户业务包:{category},商家数量:{count}家==") print("==深圳:") for i, (category, count) in enumerate(zip(categories, shenzhen_data), 1): print(f"=={i}.商户业务包:{category},商家数量:{count}家==") # 创建双饼图 pie1 = ( Pie() .add( "北京", [list(z) for z in zip(categories, beijing_data)], center=["25%", "50%"], radius=[30, 70], ) .set_global_opts(title_opts=opts.TitleOpts(title="北京商户业务包属性占比")) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c} ({d}%)")) ) pie2 = ( Pie() .add( "深圳", [list(z) for z in zip(categories, shenzhen_data)], center=["75%", "50%"], radius=[30, 70], ) .set_global_opts(title_opts=opts.TitleOpts(title="深圳商户业务包属性占比")) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c} ({d}%)")) ) return render_template("pyecharts_dual.html", chart1=pie1.dump_options(), chart2=pie2.dump_options()) # 任务四:玫瑰图呈现投诉占比 @app.route("/task4") def task4(): # 模拟数据 categories = ["大客户", "白领", "小客户", "高校", "家庭", "其他"] complaints = [320, 280, 250, 180, 150, 70] # 打印控制台输出 print("\n==任务四:北京商户业务包投诉占比==") for i, (category, count) in enumerate(zip(categories, complaints), 1): print(f"=={i}.商户业务包:{category},投诉数量:{count}家==") # 创建玫瑰图 rose = ( Rose(init_opts=opts.InitOpts(width="800px", height="600px")) .add( "投诉数量", [list(z) for z in zip(categories, complaints)], radius=["30%", "75%"], center=["50%", "50%"], rosetype="radius", ) .set_global_opts(title_opts=opts.TitleOpts(title="北京商户业务包投诉占比")) ) return render_template("pyecharts.html", chart=rose.dump_options()) # 任务五:柱状堆叠图呈现审核结果比例 @app.route("/task5") def task5(): # 模拟数据 auditors = ["A1001", "A1002", "A1003", "A1004", "A1005", "A1006", "A1007", "A1008", "A1009", "A1010"] approved = [850, 780, 650, 620, 580, 550, 520, 500, 480, 450] rejected = [400, 400, 330, 330, 290, 300, 300, 300, 300, 300] # 打印控制台输出 print("\n==任务五:审核通过与拒绝对比==") for i, (auditor, app, rej) in enumerate(zip(auditors, approved, rejected), 1): total = app + rej print(f"=={i}.二级审核人id:{auditor},审批数量:{total}条,其中通过{app}条,拒绝{rej}条==") # 创建柱状堆叠图 bar = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) .add_xaxis(auditors) .add_yaxis("通过", approved, stack="stack1", itemstyle_opts=opts.ItemStyleOpts(color="#1E90FF")) .add_yaxis("拒绝", rejected, stack="stack1", itemstyle_opts=opts.ItemStyleOpts(color="#FF4500")) .set_global_opts( title_opts=opts.TitleOpts(title="审核通过与拒绝对比"), xaxis_opts=opts.AxisOpts(name="审核人id"), yaxis_opts=opts.AxisOpts(name="审核记录数"), ) ) return render_template("pyecharts.html", chart=bar.dump_options()) # 任务六:散点地图呈现各城市商家数量分布 @app.route("/task6") def task6(): # 模拟数据 cities = ["北京", "上海", "广州", "深圳", "成都", "杭州", "重庆", "武汉", "西安", "苏州"] counts = [12500, 11800, 9800, 9500, 8700, 8500, 8200, 8000, 7800, 7500] geo_coords = { "北京": [116.46, 39.92], "上海": [121.48, 31.22], "广州": [113.23, 23.16], "深圳": [114.07, 22.62], "成都": [104.06, 30.67], "杭州": [120.19, 30.26], "重庆": [106.54, 29.59], "武汉": [114.31, 30.52], "西安": [108.95, 34.27], "苏州": [120.62, 31.32] } # 打印控制台输出 print("\n==任务六:各城市商家数量==") for i, (city, count) in enumerate(zip(cities, counts), 1): print(f"=={i}.城市:{city},商家{count}个==") # 创建散点地图 scatter = ( Scatter(init_opts=opts.InitOpts(width="1000px", height="600px")) .add_dataset( source=[ {"name": city, "value": geo_coords[city] + [count]} for city, count in zip(cities, counts) ] ) .add( series_name="商家数量", symbol_size=JsCode( "function(data) {return Math.sqrt(data[2]) / 5;}" ), encode={"lng": 0, "lat": 1, "value": 2}, label_opts=opts.LabelOpts( formatter=JsCode( "function(data) {return data.name + ': ' + data.value[2];}" ) ), ) .set_global_opts( title_opts=opts.TitleOpts(title="各城市商家数量散点地图"), visualmap_opts=opts.VisualMapOpts( dimension=2, min=min(counts), max=max(counts), range_text=["高", "低"], is_piecewise=True, pos_top="50", pos_left="30", ), ) ) return render_template("pyecharts.html", chart=scatter.dump_options()) @app.route("/") def index(): return """ <h1>外卖平台数据分析可视化</h1> <ul> <li><a href="/task1">任务一: Top10城市商家数量(条形图)</a></li> <li><a href="/task2">任务二: Top10明星审核员(柱状图)</a></li> <li><a href="/task3">任务三: 北京与深圳商户业务包属性占比(双饼图)</a></li> <li><a href="/task4">任务四: 北京商户业务包投诉占比(玫瑰图)</a></li> <li><a href="/task5">任务五: 审核通过与拒绝对比(柱状堆叠图)</a></li> <li><a href="/task6">任务六: 各城市商家数量散点地图</a></li> </ul> """ if __name__ == "__main__": app.run(debug=True)。显示这段代码的运行图片
06-24
在 SQL Server 中,可以通过以下步骤根据 `datime` 字段区分白班和夜班,并计算白班和夜班 `A1001 - A1012` 字段的平均值。假设白班时间为早上 8 点到晚上 8 点(20 点),夜班为晚上 8 点到次日早上 8 点。 ```sql -- 定义白班和夜班的开始时间 DECLARE @day_shift_start TIME = '08:00:00'; DECLARE @night_shift_start TIME = '20:00:00'; -- 计算白班和夜班 A1001 - A1012 字段的平均值 SELECT CASE WHEN CAST(datime AS TIME) >= @day_shift_start AND CAST(datime AS TIME) < @night_shift_start THEN '白班' ELSE '夜班' END AS shift_type, AVG(A1001) AS avg_A1001, AVG(A1002) AS avg_A1002, -- 依次类推计算 A1003 - A1012 的平均值 AVG(A1012) AS avg_A1012 FROM your_table GROUP BY CASE WHEN CAST(datime AS TIME) >= @day_shift_start AND CAST(datime AS TIME) < @night_shift_start THEN '白班' ELSE '夜班' END; ``` 关于是否需要单独建表来存储这些平均值,取决于具体的业务需求: - 如果这些平均值只是临时查看,不需要长期保存和后续分析,那么不需要单独建表,可以直接使用查询结果。 - 如果这些平均值需要长期保存,用于后续的报表生成、数据分析等,那么建议单独建表存储。以下是创建表并插入数据的示例: ```sql -- 创建存储平均值的表 CREATE TABLE shift_avg_values ( shift_type VARCHAR(10), avg_A1001 FLOAT, avg_A1002 FLOAT, -- 依次类推添加 A1003 - A1012 的字段 avg_A1012 FLOAT ); -- 插入计算得到的平均值 INSERT INTO shift_avg_values SELECT CASE WHEN CAST(datime AS TIME) >= @day_shift_start AND CAST(datime AS TIME) < @night_shift_start THEN '白班' ELSE '夜班' END AS shift_type, AVG(A1001) AS avg_A1001, AVG(A1002) AS avg_A1002, -- 依次类推计算 A1003 - A1012 的平均值 AVG(A1012) AS avg_A1012 FROM your_table GROUP BY CASE WHEN CAST(datime AS TIME) >= @day_shift_start AND CAST(datime AS TIME) < @night_shift_start THEN '白班' ELSE '夜班' END; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值