$ csvsql --query '
SELECT strftime("%m",[ DATE]) AS [month], COUNT(*) AS [count]
FROM A INNER JOIN B ON A.[ID ] = B.[ID]
GROUP BY [month] ORDER BY [count] DESC LIMIT 1
' A.txt B.CSV
month,count
11,3
请注意,LIMIT 1如果超过一个月具有相同的高计数,则可能不会返回您想要的结果。
另请注意,您的字段名称似乎具有不一致数量的前导/尾随空格。
恕我直言,它不是那么优雅,但你当然可以使用 awk ex。:
awk -F, '
NR==FNR {a[$1]; next}
$1 in a {
# NB not as robust as the csvsql version, which uses a proper strftime
month = substr($4,2,2); count[month]++
}
END {
for(m in count){
if(count[m] > count_max) {
count_max = count[m]; month = m
}
}
print month, count[month]
}
' A.txt B.CSV
您可以使用
csvsql
(来自基于 Python 的csvkit
包):请注意,
LIMIT 1
如果超过一个月具有相同的高计数,则可能不会返回您想要的结果。另请注意,您的字段名称似乎具有不一致数量的前导/尾随空格。
恕我直言,它不是那么优雅,但你当然可以使用 awk ex。: