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代码的更多相关文章

  1. 微信小程序开发视频教程新鲜出炉

    微信小程序开发公测了,可是对于新手来说,不同的框架不同的开发机制,如何快速适应呢?微信小程序开发视频教程新鲜出炉了,从零开始一步一步搭建微信小程序,每个章节都会涉及到不同的知识点,等教程学习完你不但掌 ...

  2. 刚写完的商城erp + 这个商城前台,新鲜出炉。自己1个人写, 包括php框架和前端html页面.

    刚写完的商城erp + 这个商城前台,新鲜出炉.自己1个人写, 包括php框架和前端html页面. 刚写完的商城erp + 这个商城前台,新鲜出炉.自己1个人写, 包括php框架和前端html页面.

  3. 23套新鲜出炉的网站和手机界面 PSD 素材

    Web 用户界面,移动用户界面和线框套件对设计师很有用,因为这些套件让他们使用快速和有效的方式复制用户界面.这些类型的工具包提供了一个基本的用户界面元素,用于它们需要制作的网站或软件模型. 在这篇文章 ...

  4. 22套新鲜出炉的 Web & Mobile PSD 用户界面素材

    在这篇文章中,我们展示的是自由和清新的 UI 设计素材套件.这些线框图和 UI 设计工具包让设计师在设计用户界面原型的时候能够非常便利. Web 用户界面,移动用户界面和线框套件对设计师很有用,因为这 ...

  5. 20个新鲜出炉的网站模板【HTML & PSD】

    这里给大家分享20 个新鲜出炉的免费网站模板.这些设计元素将成为你下一个项目的重要素材,可以帮你节省很多的时间.与往常一样,我们经常漫游网络,寻找最好的资源, HTML.CSS 和 PSD 等等,记得 ...

  6. 分享25个新鲜出炉的 Photoshop 高级教程

    网络上众多优秀的 Photoshop 实例教程是提高 Photoshop 技能的最佳学习途径.今天,我向大家分享25个新鲜出炉的 Photoshop 高级教程,提高你的设计技巧,制作时尚的图片效果.这 ...

  7. PS教程:20个新鲜出炉的 Photoshop 中级教程

    Photoshop 实例教程是提高 Photoshop 技能的最佳学习途径.今天,我向大家分享最新20个 Photoshop 进阶教程,提高你的图片处理技巧,制作时尚的效果.这些教程可以帮助把你的想法 ...

  8. Onsen UI – 新鲜出炉的 PhoneGap 界面框架

    Onsen UI 是一个基于元素自定义的 HTML5 UI 框架,用于构建你的移动前端.这个一个基于 Web 组件的概念的框架,让构建应用程序变得更加轻松.Onsen UI 专门针对 PhoneGap ...

  9. 20套新鲜出炉的免费 PSD 格式的图标《免费下载》

    在网页设计中,设计师专注于每一个领域的设计,包括颜色选择.图标.创造力.混色等.正确的选择图标可以使他们的设计脱颖而出,看起来令人震惊.在 Web 设计领域,图标发挥非常重要的作用,因为美丽的和创造性 ...

随机推荐

  1. Powershell错误处理,try catch finally

    脚本的调试向来是一个艰巨的任务,在powershell出现以前简直是一场灾难.在powershell中微软终于做出了诸多改进,不但有了$Error.-whatif,也有了ISE.而在语法上也增加了tr ...

  2. 最全的TV视频应用合集,包含50多款客户端,有丰富直播点播

    这是我目前找到的 最好的视频应用合集,与坛友分享下.有50多款视频客户端,基本覆盖目前市面上口碑比较好的视频应用了. 里面有丰富的直播客户端,像 龙龙直播.泰捷直播.果子 Tv.More Tv等,还有 ...

  3. SDL2.0 学习笔记-1 windows下的第一个测试程序

    SDL全称是Simple DirectMedia Layer,是一个开源的.跨平台(win32,linux,mac)的多媒体开发c语言库. 官方网站 http://www.libsdl.org/ 第一 ...

  4. 魅蓝Note有几种颜色 魅蓝Note哪个颜色好看

    http://www.pc841.com/shoujizhishi/39882.html http://news.mydrivers.com/1/359/359443.htm 魅族发布首款千元高性价比 ...

  5. boost::pool与内存池技术

      建议看这个链接的内容:http://cpp.winxgui.com/cn:mempool-example-boost-pool Pool分配是一种分配内存方法,用于快速分配同样大小的内存块,    ...

  6. C++中的static成员

    C++中的static 成员永远是我心中的痛,记了好多次了,但是今天在项目中依然忘记了,今天写下来,方便以后不用再去Baidu.google搜索了. 在头文件中声明静态成员 static int i; ...

  7. Linux系统中C&Cpp程序开发(一)

    之前一直在Windows系统下进行程序的设计,近期开始学习使用Linux系统,因而打算将程序开发也转移到Linux系统下.今天先简单介绍一下该系统下的C程序开发步骤. 首先要预先安装vim和gcc工具 ...

  8. 详细介绍ASP.NET页面重定向方法

    ASP.NET中页面重定向的使用的很频繁,实现方法也有不同,自己也试过几种,现在总结一下. 一.Transfer Execute Redirect重定向方法介绍 1.Server.Transfer方法 ...

  9. iOS在UITableViewController里使用UISearchDisplayController报错"[UISearchResultsTableView dequeueReusableCellWithIdentifier:forIndexPath:]"

    出现如下错误: 2016-02-13 22:09:22.318 Test[2757:192106] *** Assertion failure in -[UISearchResultsTableVie ...

  10. Tiling_easy version(填2 x N的格子的种类)

    E - Tiling_easy version 题目大意: 有一个大小是 2 x n 的网格,现在需要用2种规格的骨牌铺满,骨牌规格分别是 2 x 1 和 2 x 2,请计算一共有多少种铺设的方法. ...