精华内容
下载资源
问答
  • fr表:(vin是产品 ,abc_time表示工位abc的工作日期,abc_count 表示在工位abc的产品计数) 报表需求是用工位 带出对应工作日期和计数结果, 解决办法,有两种思路: 一、利用列传行,把fr的列转为行(方法很多,...

    做报表开发时遇到一个比较特别的数据结构,表结构如下
    frr表:(工位信息)
    在这里插入图片描述
    fr表:(vin是产品 ,abc_time表示工位abc的工作日期,abc_count 表示在工位abc的产品计数)
    在这里插入图片描述
    报表需求是用工位 带出对应工作日期和计数结果,
    解决办法,有两种思路:
    一、利用列传行,把fr的列转为行(方法很多,可以用unpivot或者union all等等);
    二、模糊查询列名(嗯,因吹斯听。。)
    那就用模糊查询列名,奥利给,干就完了
    在这里插入图片描述
    创建一个存储过程来解决:

    if(exists(select * from sysobjects where name='s_select')) drop proc s_select;
    --检查数据库是否存在重名的存储过程,有就删除,没有就创建
    create proc s_select(@str nvarchar(max)='abc')
    as
    DECLARE @sql NVARCHAR(MAX)
    DECLARE @col NVARCHAR(MAX)
     select @col =STUFF(( SELECT   ',' + t.name
                           FROM     ( SELECT    name
                                      FROM      syscolumns
                                      WHERE     id = ( SELECT   MAX(id)
                                                       FROM     sysobjects
                                                       WHERE    xtype = 'u'
                                                                AND name = 'fr' 
                                                     )
                                    ) t
                           WHERE     reverse(substring(reverse(t.name),charindex('_',reverse(t.name)) +1,500))=@str
                           --这一句是匹配下划线前面的字符串,即对应的工位
                         FOR
                           XML PATH('')
                         ), 1, 1, '')
    
    SET @sql = 'select vin, ' + @col + ' from fr';
    EXEC(@sql); 
    

    下面我们来执行这个存储过程:

    exec s_select 'bcd'
    --查询工位bcd对应的信息
    

    结果如下:
    在这里插入图片描述
    好了,又到了振奋人心的撒花花环节
    在这里插入图片描述

    展开全文
  • 检查列名是否有效

    2010-11-12 19:00:00
    //检查列名是否有效 as_colname //列名 string ls_objects ls_objects= dw_2.describe("datawindow.objects") ls_objects= '~t' + ls + '~t' if pos(ls,'~t' + trim(as_colname) + '~t'...//v_e_oxddnr_产品编号

    展开全文
  • 导入默认文件第一行为columns列名,如果文件中没有列名,需要指定pd.read_csv('train.csv',header = -1) 如果某一列为datetime类型,可以指定parse_dates=[column_name]来按照日期来进行解析。假设这样一列的列名为...

    2c467d1809487d2fdcb98612ca17e7d4.png

    当你经常在工作中拿到几十万或几百万行的中间数据结果,需要vlookup和数据透视,却发现Excel卡成狗还常常崩溃,找RD还被白眼时,你需要了解一下Pandas了。

    人生苦短,我用python。Pandas是当前用于数据处理和分析中最流行的Python库。学会它能极大地简化日常对数据的处理操作。学会Pandas能减轻Excel带来的焦虑与脱发,配合jupyter notebook使用有奇效。

    文中提到的具体数据和对应的jupyter notebook见文末。这里使用到的数据集是经典的泰坦尼克号人员名单数据集,可以替换成你实际的业务数据。

    下面进入正题!

    Pandas包括两大数据结构:

    • Pandas DataFrame
    • Pandas Series

    完全可以把Pandas DataFrame理解成一个Excel表格。包括行与列,差异在于一列中的数据类型需要保持一致。Pandas Series可以理解成Pandas DataFrame中的一列。

    建议大家打开jupyter实际操作一下,把结果打印出来看一看。

    安装Install

    需要首先确保自己有安装好Pandas library。可以通过Anaconda或pip进行安装。然后就可以 import pandas as pd

    如果我们的业务数据当中列特别多,那么我们在看output时,一些列会被折叠起来,不能全部显示。这里有个小tips,我们简单修改一下Pandas的参数设置就可以看完整了。

    pd.set_option('display.max_columns', 500) 默认只展示50列,修改之后可以同时展示500列。

    同理对行也有这样的需求的话: pd.set_option('display.max_rows',500)

    导入数据

    无论是CSV还是Excel文件都能轻松导入Pandas:

    • 导入CSV文件: pd.read_csv('train.csv')
    • 导入Excel文件: pd.read_excel('train.xls')

    可能的问题:

    1. 要导入成功,需要保证对应的file在当前的目录下。可以在jupyter里通过!pwd查看当前的路径,!ls查看当前路径下的文件。
    2. 导入默认文件第一行为columns列名,如果文件中没有列名,需要指定pd.read_csv('train.csv',header = -1)
    3. 如果某一列为datetime类型,可以指定parse_dates=[column_name]来按照日期来进行解析。假设这样一列的列名为"Date",pd.read_excel("train.xls", parse_dates = ["Date"])

    29a4ebcc22dfe477d3f21c1a24808e6c.png

    了解数据

    1.DataFrame

    df.head()获取dataframe的前5行。df.head(N)可以通过指定N值来获取任意行数。

    df.tail()获取dataframe的后5行。

    df.shape获取dataframe的行数与列数。

    df.info()获取dataframe的索引值类型,列数据类型,填充情况和内存占用量。

    df.describe()获取对dataframe的统计性数据。

    2.columns

    可以通过df["Age"].value_counts()获取对应值出现的频次,或者通过df["Age"].value_counts(1)来获取对应的占比。

    df["Age"].isnull().sum()获取该列为空的数目。

    df["Age"].notnull().sum()获取该列非空的数目。

    df["Age"].unique()获取该列去重的数目。

    df.columns获取所有的列名。

    选择数据

    1.通过列进行选择

    df["Age"]选择对应这一列。 df[['PassengerId','Age','Survived']]选择对应这几列。

    2.使用Index选择 主要使用.loc.iloc

    df.loc[]使用rows和columns的名称来进行选择: df.loc[0:4,['PassengerId']]选择所有的行对应列为'Contour'的数据。:代表所有的行。需要指定对应的行时,可以写成df.loc[0:4,['PassengerId']]

    df.iloc使用对应位置的index来进行选择: df.iloc[:,3]选择所有行对应第三列的数据。 df.iloc[3,:]选择第三行所有列对应的数据。注意index从0开始。

    3.过滤筛选

    可以使用一个mask来帮助基于指定的条件进行筛选。

    mask = df['Survived'] == 1
    df[mask]

    mask的值为True 或者False,表示是否符合对应的条件,即df['Survived'] == 1df[mask]返回所有Contour列为Top的数据。

    除了==的条件,还可以:

    #值的范围:
    mask2 = df['Age'] > 35
    #是否在指定范围内
    mask3 = df['Embarked'].isin(['S','C'])
    筛选反向mask,可以写成df[~mask]
    #筛选列的数据类型
    df.select_dtypes(include=[np.number])

    清洗数据

    要做好数据分析,需要首先保证数据的质量。实际业务数据中或多或少存在一些问题,下面说一些实际中常用的数据清洗方法。注意指定inplace=True才能让改变在dataframe中实际执行。

    1.替换错误的值 df.replace({'female': 'f','male':'m'}, inplace =True)

    2.删除空的数据 df['Cabin'].dropna(inplace =True)

    3.空值替换 df['Age'].fillna(df['Age'].mean(), inplace=True) #将空值替换为对应的平均值

    4.删除行或列 df.drop(columns = ['Ticket'], inplace = True) df.drop(2, axis=0, inplace=True) axis=0指删除行,axis=1指删除列

    5.更新列名 df.rename(columns = {'PassengerId' : 'PaId', 'Survived' : 'Surv'}, inplace = True)

    6.更改数据 df['Fare'].apply(np.sqrt) 在列上指定某个操作使用.apply

    数据分组和聚合

    我们经常需要把数据按照某些维度聚合来观察另外一些列的分布情况。

    • df.groupby(by=['Pclass'])['Fare'].mean()
    • df.groupby(by=['Pclass'])['Fare'].sum()
    • df.groupby(by=['Pclass'])['Fare'].count()
    • df.groupby(by=['Pclass', 'Surv'])['Fare'].mean()

    DataFrame的合并

    有时我们需要将dataframe按照一些规则合并在一起。

    1. 按columns合并 pd.concat([df, df2], axis=1)

    2. 按rows合并 pd.concat([df, df2], axis=0)

    3. merge在一起,可以对应到Excel里的vlookup:

    pd.merge(df, df2, left_on='PaId', right_on='PaId', how='outer') # how支持inner,outer,left,right

    df与df2列重名儿的话,可以指定suffixes: pd.merge(df, df2,left_on='PaId', right_on='PaId', how='outer',suffixes=['_L', '_R'])

    数据透视表

    经典的Excel中的数据透视表功能,在Pandas中对应pivot_table:

    df.pivot_table(index = 'Pclass', columns = 'Surv', values = 'Fare', aggfunc='mean')

    输出结果

    输出csv: df.to_csv('myDataFrame.csv', sep='t') sep对应分隔符,默认的是","

    输出excel:

    writer = pd.ExcelWriter('myDataFrame.xlsx') 
    df.to_excel(writer, 'DataFrame') 
    writer.save()

    数据和jupyter notebook

    链接: https://pan.baidu.com/s/1w_bZoFNVzVXoZPC9YT4WfQ 提取码: seyt


    觉得有用的话关注我吧!

    多谢多谢!

    展开全文
  • poi动态根据列名和数据导出

    千次阅读 2018-11-30 14:53:28
    public void export2(HttpServletRequest req, ... //列名 List<String> headers = Arrays.asList("产品名称", "订单ID", "城市", "柜机编号", "...
    public void export2(HttpServletRequest req, HttpServletResponse resp, String type) throws IOException {
            //列名
            List<String> headers = Arrays.asList("产品名称", "订单ID", "城市", "柜机编号", "小区名称");
            List<Map<String, String>> exportDatas = new ArrayList<Map<String, String>>();
            List<OrderProductAttr> orderProductAttrList = orderProductAttrService.findDataPage(orderProductAttr, pager);
        
            //将查询结果,存放进列值
            for (OrderProductAttr productAttr : orderProductAttrList) {
                Map<String,String> map=new HashMap<>();
                map.put("产品名称", productAttr.getProduct_name());
                map.put("订单ID", productAttr.getOrder_id());
                map.put("城市", productAttr.getDispatch_name());
                map.put("柜机编号", productAttr.getCabinet_id());
                map.put("小区名称", productAttr.getVillage());
                exportDatas.add(map);
            }
            //导出
            exportExcel(req,resp,headers,exportDatas);
        }
    
    public void exportExcel(HttpServletRequest req, HttpServletResponse resp, List<String> headers, List<Map<String, String>> exportDatas) throws IOException {
            // 创建一个工作薄
            SXSSFWorkbook wb = new SXSSFWorkbook();
            //创建sheet
            Sheet sh = wb.createSheet("订单信息");
            //设置表头字体
            Font headFont = wb.createFont();
            headFont.setFontName("宋体");
            headFont.setColor(HSSFColor.WHITE.index);
            headFont.setFontHeightInPoints((short) 10);// 字体大小
            headFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 加粗
    
            // 设置表头样式
            CellStyle headStyle = wb.createCellStyle();
            headStyle.setFont(headFont);
            headStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中
            headStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中
            headStyle.setLocked(true);
            headStyle.setWrapText(true);// 自动换行
            headStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
            headStyle.setFillForegroundColor(HSSFColor.GREEN.index);
    
            // 设置普通单元格字体
            Font font = wb.createFont();
            font.setFontName("宋体");
            font.setFontHeightInPoints((short) 9);
    
            // 设置普通单元格样式
            CellStyle style = wb.createCellStyle();
            style.setFont(font);
            style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中
            style.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);// 上下居中
            style.setWrapText(true);
            style.setLeftBorderColor(HSSFColor.BLACK.index);
            style.setBorderLeft((short) 1);
            style.setRightBorderColor(HSSFColor.BLACK.index);
            style.setBorderRight((short) 1);
            style.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体
            style.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色.
            style.setFillForegroundColor(HSSFColor.WHITE.index);// 设置单元格的背景颜色.
    
            //设置单位格样式为文本
            DataFormat dataFormat = wb.createDataFormat();
            style.setDataFormat(dataFormat.getFormat("@"));
    
            /**
             * 设置列名
             */
            Row sheetRow = sh.createRow(0);
            Cell cell = null;
            for (int i = 0; i < headers.size(); i++) {
                cell = sheetRow.createCell(i);
                cell.setCellValue(headers.get(i));
                cell.setCellStyle(headStyle);
            }
    
            /**
             * 设置列值
             */
            int rows = 1;
            for (Map<String, String> data : exportDatas) {
                Row row = sh.createRow(rows++);
                int initCellNo = 0;
                int titleSize = headers.size();
                for (int i = 0; i < titleSize; i++) {
                    String key = headers.get(i);
                    Object object = data.get(key);
                    if (object == null) {
                        row.createCell(initCellNo).setCellValue("");
                    } else {
                        row.createCell(initCellNo).setCellValue(String.valueOf(object));
                    }
                    initCellNo++;
                }
            }
    
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
            String fileName = "订单信息" + sdf.format(new Date()) + ".xlsx";
            resp.setContentType("application/octet-stream;charset=utf-8");
            resp.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
            ServletOutputStream out = resp.getOutputStream();
            wb.write(out);
            out.close();
        }

     

    展开全文
  • 产品编号',width:150,align:'center'}, {field:'materialName',title:'产品名称',align:'center',sortable:true}, {field:'materialType',title:'产品类别',...
  • 1 CREATE TABLE itemdata_LANG ( 2 itemno varchar(30) NOT NULL, 3 itemname varchar(500), -- 产品名称 4 othername varchar(500), 5 indications varchar(8000), -- 适用范围 ...
  • 简述:最近产品经理提了个需求,需要导出客户表的所有字段,那如何导出表结构,包含表的列名、数据类型、字段备注等表结构呢,让我们一起来看看吧~
  • 表中含有的字段:订单编号、订日期、门店、产品ID、顾客、数量。打开PowerBI Desktop 页面,从功能栏上点击“获取数据”,选择“更多”。页面就会显示不同渠道的数据源,根据需要选择一个数据源。点击“连接”后,...
  • 从书上copy了个struts2和hibernate的例子,数据库能够连接,但是没法显示,是不是哪块代码写错了 showAllInfo.jsp代码  pageEncoding="utf-8"%> ...产品列表 产品列表 产品 产品名称 产品价格 是否删除 是否
  • 小编典典您可以使用 TableNamesFinder 来遍历所有列。正如您在结果列表中看到的那样, TableNamesFinder 不会...对于特定的产品,JSqlParser为解析树生成节点。 列 就是其中之一。为了完成实现,必须收集所有列并...
  • 以企业最普遍的场景 —— 表格为例,与大家探讨,第三方工具是如何帮助开发人员解放生产力,又是如何帮助他们优化产品性能和用户体验,从而保证为最终用户提供更具价值和更高质量的产品。 一、前言 大家应该都知道...
  • 随着互联网、大数据等新兴技术的飞速普及应用,数据集中存储已成为趋势,越来越多的应用采用连接数据中心或者数据共享层的方式来开展业务,这使得采用“先脱敏-后分发”方式的静态数据脱敏产品往往无法满足用户...
  • 在处理非结构化数据的问题上,人工...结构化数据普遍存在于各类商业应用软件和系统中,例如产品数据存储,交易日志,ERP 和 CRM 系统中都存在大量结构化数据,这些结构化数据仍应用着陈旧的数据技术处理,如基于规...
  • 在处理非结构化数据的问题上,人工...结构化数据普遍存在于各类商业应用软件和系统中,例如产品数据存储,交易日志,ERP 和 CRM 系统中都存在大量结构化数据,这些结构化数据仍应用着陈旧的数据技术处理,如基于规...
  • 而 MySQL 由于免费,而且性能强劲,是目前使用最广泛的数据库产品,同时也是入门门槛最低的数据库产品之一。更重要的是,掌握了 MySQL,会为你以后学习其他数据库产品打下坚实的基础。今天给大家带来一门MySQL ...
  • 点击“了解更多”获取DevExpress v19.2完整版下载在本系列文章中,小编将为大家详细介绍在下一个主要... 该版本可以与其他主要版本的DevExpress产品并排安装。 在安装Early Access和CTP版本之前,请备份您的项目和其...
  • ETL的列名产品是由“有司法权主管机关”(Authorities Having Jurisdiction)承认的,可认为“已批准”。UL认证标志是美国以及北美地区公认的安全认证标志,贴有这种标志的产品,就等于获得了安全质量信誉卡,其...
  • show index from B 或 show create table Balter table 表名 drop index 索引名删除:alter table B drop index M、drop index 索引名 on 表名添加:alter table 表名 add index/nuique 索引名(列名)->...
  • | 列名 | 类型 | +-------------+---------+ | sell_date | date | | product | varchar | +-------------+---------+ 此表没有主键,它可能包含重复项。 此表的每一行都包含产品名称和在市场上销售的日期。 编写一...
  • D-Link DI-504产品手册

    2020-03-04 23:09:49
    DI-504设计风格依旧,小巧美观,设置简便,特别为家庭设计了...高级防火墙特性,可基于Mac地 址、IP地址、URL和/或域名的内容过滤, 被列名的网站将禁止访问, 且可将这些过滤限制调整为在 一定日期、小时或分钟内活动。
  • GROUP_CONCAT()函数 将组中的字符串连接成为具有各种选项的单个字符串。 例子: 表Activities: +-------------+---------+ | 列名 | 类型 | ...此表的每一行都包含产品名称和在市场上销售的日...
  • 表Activities: +-------------+---------+ | 列名 | 类型 | +-------------+---------+ | sell_date | date | | product | varchar | +-------------+---------+ 此表没有主键,它可能包含重复项。 此...
  • 什么是BQB认证?

    千次阅读 2018-06-29 16:11:18
    发证机构:SIG2、QDL列名:蓝牙产品“最终产品列表”,原来称呼:EPL列名指蓝牙BQB认证的列名形式,例如蓝牙音箱成品,如果蓝牙模块已经过了BQB认证,那么蓝牙音箱这个产品可以不用重新申请BQB认证,只要取得模块...
  • 伦茨课堂-关于BQB认证

    2019-01-27 11:42:53
    2、QDL列名:蓝牙产品“最终产品列表”,原来称呼:EPL列名指蓝牙BQB认证的列名形式,例如蓝牙音箱成品,如果蓝牙模块已经过了BQB认证,那么蓝牙音箱这个产品可以不用重新申请BQB认证,只要取得模块供应商的授权,就...
  • SQL聚合函数

    2019-10-03 10:21:03
    COUNT(*)计算元组个数 COUNT(列名)对一列中的值计算个数 SUM(列名)求某一列值的总合 ...假设产品项目经理想了解目前为止商品的总销售额,那么我们可以使用以下的查询脚本:  SELECTSUM(数量)A...
  • SELECT语句SELECT语句是最常用的SQL语句,用来从一...输出:2、检索多个列在SELECT关键字后列出多个列名列名之间用逗号隔开,最后一个列名后不加逗号eg:从产品表中查询产品ID,产品名称,产品价格输入:SELECT pr...
  • SELECT语句SELECT语句是最常用的SQL语句,用来从一...输出:2、检索多个列在SELECT关键字后列出多个列名列名之间用逗号隔开,最后一个列名后不加逗号eg:从产品表中查询产品ID,产品名称,产品价格输入:SELECT pr...
  • MySql之表操作

    2017-03-01 17:34:40
    1、创建表: CREATE TABLE `表名称`( `列名` BIGINT NOT NULL AUTO_INCREMENT COMMENT '订单ID', `列名` BIGINT NOT NULL... `列名` BIGINT NOT NULL COMMENT '产品ID', PRIMARY KEY (order_id) )ENGINE=INNODB DEF

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 200
精华内容 80
关键字:

产品列名