新鲜出炉的awk代码
echo "" | igawk -f main.awk
# 需求:按照多种充值方式的多种金额类型进行累加统计
# 充值方式:移动卡 ,,,100元,联通卡20,,, 电信卡 ,,,,
# wap快充 ,,, 移动短充,,,,
# 设计:SQL语句取得表虽然不一致,但是我保证所有的记录集都包含2个字段,单元是元
# (固定金额的)累加值,固定金额
# 除了支付宝的其他数据表都没有记录泡豆数,但是金额可以推算出泡豆比例
# 目前有两种,一种1比10 ,一种1比8, 换算是通过savePayList函数完成(gold * paodouRate) @include lib/db.awk
@include lib/makesql.awk # 创建进行统计的价格列表
function makePriceList(s, arr, __ARGVEND__,tempArr)
{
split(s,tempArr,",")
for(i in tempArr)
{
arr[tempArr[i]]
}
} # 从记录集里提取价格
function parseResultSet(resultSet,payList,__ARGVEND__,i,tempArr)
{
for(i in resultSet)
{
split(i,tempArr," ")
total = tempArr[]
price = tempArr[]
payList[price] = total
}
} # 保存单条支付信息
function savePayInfo(item,price,gold,paodou, __ARGVEND__, setData)
{
setData["item"] = item
setData["price"] = price
setData["gold"] = gold
setData["paodou"] = paodou
setData["stat_date"] = STAT_DATE makeInsertSQL(TABLE_NAME,setData,SCRIPT)
} # 创建一个支付方式全部价格的支付信息
function savePayList(priceList, payList, item, paodouRate, __ARGVEND__, setData, i)
{
for(i in priceList) # 该统计需求不在乎元素在不在数组里
{
savePayInfo(item, i, int(payList[i]), int(payList[i]) * paodouRate)
}
} # 移动充值
function chinaMobilePay(__ARGVEND__,sql,priceList,resultSet1, resultSet2, payList1, payList2, payAll, i)
{
# 易宝卡充
sql = "select sum(price),price from pppay_order where moneyType=1 and status=4"
sql = sql " and from_unixtime(dateline) like '" STAT_DATE "%' group by price;"
executeResultSet(BANKDB,sql,resultSet1)
parseResultSet(resultSet1,payList1) # 神州付卡
sql = "select floor(sum(payMoney)/100),floor(payMoney/100) from pppay_order_szf where moneyType=1"
sql = sql " and status=8888 and cardTypeCombine=0 and inserttime like '" STAT_DATE "%' group by payMoney"
executeResultSet(BANKDB,sql,resultSet2)
parseResultSet(resultSet2,payList2) # 合并两种支付方式
makePriceList("10,30,50,100",priceList)
for(i in priceList)
{
payAll[i] = payList1[i] + payList2[i]
} # 保存记录
savePayList(priceList, payAll, "china_mobile", )
} # 联通充值
function chinaUnicomPay(__ARGVEND__,sql,priceList,resultSet,payList)
{
sql = "select floor(sum(payMoney)/100),floor(payMoney/100) from pppay_order_szf where moneyType=1"
sql = sql " and status=8888 and cardTypeCombine=1 and inserttime like '" STAT_DATE "%' group by payMoney" executeResultSet(BANKDB,sql,resultSet)
parseResultSet(resultSet,payList)
makePriceList("20,30,50,100",priceList)
savePayList(priceList, payList, "china_union", )
} # 电信充值
function chinaTelecomPay(__ARGVEND__,sql,priceList,resultSet,payList)
{
sql = "select floor(sum(payMoney)/100),floor(payMoney/100) from pppay_order_szf where moneyType=1"
sql = sql " and status=8888 and cardTypeCombine=2 and inserttime like ' " STAT_DATE "%' group by payMoney" executeResultSet(BANKDB,sql,resultSet)
parseResultSet(resultSet,payList)
makePriceList("20,30,50,100,300",priceList)
savePayList(priceList, payList, "china_telecom", )
} # wap快充
function wapPay(__ARGVEND__, sql, priceList, resultSet, payList, i)
{
sql = "select sum(price),price from pppay_order_yxjd where status=8888 and moneyType=1"
sql = sql " and inserttime like '" STAT_DATE "%' group by price;" executeResultSet(BANKDB,sql,resultSet)
parseResultSet(resultSet,payList)
makePriceList("2,3,5,10",priceList)
savePayList(priceList, payList, "wap", )
} # 短信充值 - 移动短充
function messagePay(__ARGVEND__,sql,priceList,resultSet,payList)
{
sql = "select sum(price),price from pppay_order_yxjd_sms where status=8888 "
sql = sql" and inserttime like '" STAT_DATE "%' group by price;" executeResultSet(BANKDB,sql,resultSet)
parseResultSet(resultSet,payList)
makePriceList("2,3,5,10",priceList)
savePayList(priceList, payList, "message", )
} # 支付宝充值
function zhifubaoPay(__ARGVEND__, sql, record, tempArr, totalPrice, paodou)
{
sql = "select sum(payMoney), sum(ppdou_num) from pppay_order_alipay where status=8888"
sql = sql" and moneyType=1 and inserttime like '" STAT_DATE "%'" record = executeScalar(BANKDB,sql) split(record,tempArr," ")
totalPrice = int(tempArr[])
paodou = int(tempArr[]) savePayInfo("zhifubao", "-", totalPrice, paodou);
} BEGIN{
DB = "/usr/local/bin/mysql --disable-auto-rehash -C "
BANKDB = DB " -h 192.111.0.211 -u pp**** -pstat** bank**";
STAT_DATE = "2013-09-18" TABLE_NAME = "pay_stat"
SCRIPT = ""
} END{
chinaMobilePay()
chinaUnicomPay()
chinaTelecomPay()
wapPay()
messagePay()
zhifubaoPay()
}
新鲜出炉的awk代码的更多相关文章
- 微信小程序开发视频教程新鲜出炉
微信小程序开发公测了,可是对于新手来说,不同的框架不同的开发机制,如何快速适应呢?微信小程序开发视频教程新鲜出炉了,从零开始一步一步搭建微信小程序,每个章节都会涉及到不同的知识点,等教程学习完你不但掌 ...
- 刚写完的商城erp + 这个商城前台,新鲜出炉。自己1个人写, 包括php框架和前端html页面.
刚写完的商城erp + 这个商城前台,新鲜出炉.自己1个人写, 包括php框架和前端html页面. 刚写完的商城erp + 这个商城前台,新鲜出炉.自己1个人写, 包括php框架和前端html页面.
- 23套新鲜出炉的网站和手机界面 PSD 素材
Web 用户界面,移动用户界面和线框套件对设计师很有用,因为这些套件让他们使用快速和有效的方式复制用户界面.这些类型的工具包提供了一个基本的用户界面元素,用于它们需要制作的网站或软件模型. 在这篇文章 ...
- 22套新鲜出炉的 Web & Mobile PSD 用户界面素材
在这篇文章中,我们展示的是自由和清新的 UI 设计素材套件.这些线框图和 UI 设计工具包让设计师在设计用户界面原型的时候能够非常便利. Web 用户界面,移动用户界面和线框套件对设计师很有用,因为这 ...
- 20个新鲜出炉的网站模板【HTML & PSD】
这里给大家分享20 个新鲜出炉的免费网站模板.这些设计元素将成为你下一个项目的重要素材,可以帮你节省很多的时间.与往常一样,我们经常漫游网络,寻找最好的资源, HTML.CSS 和 PSD 等等,记得 ...
- 分享25个新鲜出炉的 Photoshop 高级教程
网络上众多优秀的 Photoshop 实例教程是提高 Photoshop 技能的最佳学习途径.今天,我向大家分享25个新鲜出炉的 Photoshop 高级教程,提高你的设计技巧,制作时尚的图片效果.这 ...
- PS教程:20个新鲜出炉的 Photoshop 中级教程
Photoshop 实例教程是提高 Photoshop 技能的最佳学习途径.今天,我向大家分享最新20个 Photoshop 进阶教程,提高你的图片处理技巧,制作时尚的效果.这些教程可以帮助把你的想法 ...
- Onsen UI – 新鲜出炉的 PhoneGap 界面框架
Onsen UI 是一个基于元素自定义的 HTML5 UI 框架,用于构建你的移动前端.这个一个基于 Web 组件的概念的框架,让构建应用程序变得更加轻松.Onsen UI 专门针对 PhoneGap ...
- 20套新鲜出炉的免费 PSD 格式的图标《免费下载》
在网页设计中,设计师专注于每一个领域的设计,包括颜色选择.图标.创造力.混色等.正确的选择图标可以使他们的设计脱颖而出,看起来令人震惊.在 Web 设计领域,图标发挥非常重要的作用,因为美丽的和创造性 ...
随机推荐
- android中对线程池的理解与使用
前段时间有幸接到腾讯上海分公司的 Android开发面试,虽然最后一轮被毙了.但还是得总结一下自己在android开发中的一些盲点,最让我尴尬的是面试官问我几个android中线程池的使用与理解..哎 ...
- 转:Yii 常量的轻松管理
问题 我经常在不同的地方使用模型中的常量(基本状态常量),当常量改变时我不得不在使用每处它的代码中修改. 获取常量 为了解决这个问题我使用了一个方法 getConstants(). public st ...
- cocos2d-x多分辨率适配原理分析(2.0.4之后的版本)
2013年11月4日补充: 之前写这篇博客的时候其实我还没有开始过真正的去做一个项目,主要过程还是偏向于理解原理.前几天在准备练练手时回过头来想了下这个问题,发现又有点一头雾水了,所以我觉得之前我并没 ...
- 记一次pending请求问题查找过程
情景再现 近期发现网站访问变慢,经常会出现请求无法响应的问题,一个请求长时间没有返回,导致页面出现504(Gateway Timeout),我们使用的nodejs+ngnix(反向代理). 猜测原因 ...
- lua中的坑
在工作中使用lua也有一年了,代码也写了不少,踩过不少坑,这里记录一下. table.sort table.sort是lua自带的排序函数,数据量小时,也还是不错的.不过要注意你传入的compare函 ...
- 一种调用opencv库的C++工程通用的Makefile模板
第一次自己写makefile,记录一下 #Compilers #CXX=/opt/compiler/gcc-/bin/g++ CXX = g++ #Includes INCLUDE_FLAGS = - ...
- 用python演示一个简单的AST(抽象语法树)
如果对'a + 3 * b'进行解释,当中a=2,b=5 代码非常easy,就不再进行具体的解释了. Num = lambda env, n: n Var = lambda env, x: env[x ...
- Win8.1OS64位oracle11安装配置及PL/SQL Developer怎样连接64位oracle
Oracle 为什么选择oracle 1.oracle可以在主流的平台上执行,而相对于sql server仅仅支持windows,而windows在wr手里攥着呢,所以你懂的.在安全性上来讲,非常多地 ...
- Eclipse颜色主题插件-Eclipse Color Theme
Eclipse颜色主题插件-Eclipse Color Theme 由于看烦了eclipse自带的的配色方案,自己动手配置又太麻烦,无意间在 http://eclipsecolorthemes.org ...
- android2.3 View视图框架源码分析之一:android是如何创建一个view的?
View是所有控件的一个基类,无论是布局(Layout),还是控件(Widget)都是继承自View类.只不过layout是一个特殊的view,它里面创建一个view的数组可以包含其他的view而已. ...