新鲜出炉的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 设计领域,图标发挥非常重要的作用,因为美丽的和创造性 ...
随机推荐
- LeetCode _ Word Break
Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separa ...
- Altium Designer如何批量修改名称,数值,封装
方法一: altium里的封装管理库 1,Tools -> Footprint Manager -> ...2,在Component List里选择要改的器件3,在View and Edi ...
- Altium Designer多图纸原理图设计方法探讨
1 图纸结构 包括层次式图纸的连接关系是纵向的,也就是某一层次的图纸只能和相邻的上级或下级有关系,另一种即扁平式图纸的连接关系是横向的,任何两张图纸之间都可以建立信号连接. 2 网络连接方式 Alti ...
- PCB走线和过孔的过流能力
PCB走线的载流能力与以下因素有关:线宽.线厚(铜箔厚度).容许温升.PCB走线越宽,载流能力越大. 近似计算公式: I=KT0.44A0.75 (K为修正系数,一般覆铜线在内层时取0.024,在外层 ...
- js中()()问题
var aa=function(){}(); var bb=(function(){})(); 今天被问到这个问题,这段js有撒区别. 总结一下,两个函数都是立即执行的意思.但是不同之处是执行的顺序, ...
- row cache lock
SQL> col name format a30 SQL> select * from (select SAMPLE_TIME, SESSION_ID, NAME, P1, P2, P3, ...
- 【转】 Android ListView与Button的显示----不错不错
原文网址:http://blog.csdn.net/zy987654zy/article/details/39225819 在开发中有时候会碰见一些很简单的问题,但是当初没想通的时候 死都搞不定. 我 ...
- java与数据结构(3)---java实现循环链表
循环链表:将单链表中尾结点的指针由空指针改为指向头结点,就使整个单链表形成一个环,这种首尾相接的单链表称为单链表循环表,即循环链表. 循环链表与单链表最重要的区别是:尾结点的指针,不再是p->n ...
- jQuery扩展与noConflict的用法-小示例
有时我们要用到自己定义的jquery,这时可以通过jQuery扩展来实现该功能 index.html <!DOCTYPE html> <html> <head> & ...
- Java finally语句到底是在return之前还是之后执行(JVM字节码分析及内部体系结构)?
之前看了一篇关于"Java finally语句到底是在return之前还是之后执行?"这样的博客,看到兴致处,突然博客里的一个测试用例让我产生了疑惑. 测试用例如下: public ...