cat dd.txt
courseId startTime endTime
107 1548471600 1548475200
337 1550455200 1550458800
337 1553306400 1553310000
如上所述,现在有一批数据,需要通过courseId、startTime、endTime三个维度(三个变量)唯一确定一条数据,然后以courseId分组进行数据统计。笔者记得有位置变量可以实现,不过很遗憾的是忘记了,只能对而求其次,换了一种方法实现,如果有大神路过,还请留言指教
cat dd.sh
#!/bin/bash
username=account
passwd=mima
mysql -u$username -p$passwd -Bse "truncate table test.caidan"
while [ "1" = "1" ]
do
id=`cat dd.txt | head -1 | awk '{print $1}'`
start=`cat dd.txt | head -1 | awk '{print $2}'`
end=`cat dd.txt | head -1 | awk '{print $3}'`
num1=`mysql -u$username -p$passwd edusoho_e -Bse "SELECT COUNT(*) FROM course_member WHERE courseId=$id AND createdTime BETWEEN $start AND $end"`
mysql -u$username -p$passwd -Bse "insert into test.caidan select $id,$num1"
sed -i '1d' dd.txt
num=`cat dd.txt | wc -l`
if [ $num -eq 0 ];then
exit
fi
done
分组统计结果
SELECT id,SUM(num1) FROM `test`.`caidan` GROUP BY id ORDER BY NULL
转载于:https://blog.51cto.com/20131104/2411106