publicclassMain { publicstaticvoidmain(String[] args) { Stringtarget="abc"; char ch[] = {'b','g','c','a','l','g','b','c'}; int[] match = match(target, ch); for (inti=0;i<match.length;i++){ System.out.print(match[i]+" "); } } publicstaticint[] match(String target,char ch[]){ intn= ch.length; intm= target.length(); int res[] = newint[2]; //结果数组 intpos=0; //记录搜索到字符串的什么位置 for (inti=0;i<n;i++){ if (target.charAt(pos)==ch[i]){ //如果找到一个 if (pos==0){ //如果市首位,则结果数组记录下来 res[0] = i; } pos++; //则字符串中的位置向后移动一位 } if (pos==m){ //如果是最后一位,则结果数组记录下来 res[1] = i; break; } } if (res[1]!=0){ return res; }elsereturnnewint [0]; }
}
sql
answer_tb中表的内容为:
要查询的内容为:
其中per_num:回答问题的数量/答题人数
分析
通过输出的结果可以看出,是通过日期分组,通过日期的时间进行从低到高的排序。
计算per_num时里面的答题人数要去重。
并且结果保留两位有效数字。
代码为:
1
SELECT answer_date,FORMAT((count(*)/ count(DISTINCT author_id)),2) per_num FROM answer_tb where answer_date BETWEEN "2021-11-01" and "2021-11-05" GROUP BY answer_date order by answer_date asc