新鲜出炉的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 设计领域,图标发挥非常重要的作用,因为美丽的和创造性 ...
随机推荐
- Usage、Usage Minimum和Usage Maximum项目详解
(1)一个产生多个数据域(Report Count>1)的主项目之前有一个以上的[用途]时,每个[用途]与一个数据域依次对应,如果数据域个数(Report Count)超过[用途]的个数,则剩余 ...
- WIN7下关闭驱动数字签名检查的方法
内容是转的,最后一步貌似没什么用处,水印是去不掉的,不过也无所谓,关键是驱动能用了,要不完全瞎了 实测win7 32位旗舰版可用 ================================= ...
- 2014-07-23 .NET实现微信公众号接入
今天是在吾索实习的第11天.今天我跟我的实习小组的组员们,解决了关于使用ASP.NET进行微信公众号接入的问题.因为我们小组成员也是刚接触微信公众号的二次开发,所以在解决该问题的工程中也走了不少弯路. ...
- JDBC之ResultSet
ResultSet is a interface More gnerally,ResultSet is a class involves a table returned by executeQuer ...
- 关于Python中的for循环控制语句
#第一个:求 50 - 100 之间的质数 import mathfor i in range(50, 100 + 1): for j in range(2, int(math.sqrt(i)) ...
- CSS常用操作-图片
index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...
- 从epoll构建muduo-11 单线程Reactor网络模型成型
mini-muduo版本传送门 version 0.00 从epoll构建muduo-1 mini-muduo介绍 version 0.01 从epoll构建muduo-2 最简单的epoll ver ...
- java对象的内存分配
(1) 寄存器(register).这是最快的保存区域,这是主要由于它位于处理器内部.然而,寄存器的数量十分有限,所以寄存器是需要由编译器分配的.我们对此没有直接的控制权,也不可能在自己的程序里找到寄 ...
- Android学习笔记(二)之异步加载图片
最近在android开发中碰到比较棘手的问题,就是加载图片内存溢出.我开发的是一个新闻应用,应用中用到大量的图片,一个界面中可能会有上百张图片.开发android应用的朋友可能或多或少碰到加载图片内存 ...
- c++ 连接两个字符串实现代码 实现类似strcat功能(转)
想实现strcat功能,直接网上找一个. 第一种: #include "stdafx.h" #include<iostream> using namespace std ...