C语言写类似SQL语句Group by 功能的算法

时间:2021-02-14 01:04:53
最近使用单片机做数据处理,要打印统计报表,由于硬件限制,不能使用数据库,现在要打印一个统计报表:
原数据表:
货物    重量
A      100
B      100
C      200
A      100
B      200
打印要求统计表:
货物    批数     重量累计
A      2       200
B      2       300
C      1       200
即mySQL的group by 语句的功能。
自己用遍历写了一个感觉效率很低,虽然数据量不是很大。求大家提供思路或资料。谢谢!

2 个解决方案

#1


货物应该有ID,类似于1 2 3,或者A B C这样,当然货物的ID是有限范围的,如果这些满足,假设为A-Z这样,
数据结构为
a[ID][2];
输入为货物ID:UID,个数为cnt,则求和为:
a[UID-'A'][0] += cnt;
a[UID-'A'][1]++;

最后的结果为这样的格式:
a[][] = { {200,2},{300,2},{200,1}}
单次遍历即可计算出结果。

#2


用switch  case或者if else的结构

#1


货物应该有ID,类似于1 2 3,或者A B C这样,当然货物的ID是有限范围的,如果这些满足,假设为A-Z这样,
数据结构为
a[ID][2];
输入为货物ID:UID,个数为cnt,则求和为:
a[UID-'A'][0] += cnt;
a[UID-'A'][1]++;

最后的结果为这样的格式:
a[][] = { {200,2},{300,2},{200,1}}
单次遍历即可计算出结果。

#2


用switch  case或者if else的结构