我在BigQuery表中有一个字段:
'created_date'
。我需要按跨年的月份按“ created_date”获取记录计数的输出:例如:2014 ... 2019:
所需的输出:
2014
Jan 1125
Feb 3308
2015
Jan 544
Feb 107
...
2016
...
2017
2018
...
2019
Jan 448
Feb 329
...
以此类推。
甚至:
Jan-2014 <count>
Feb-2014 <count>
我在Oracle,PostgreSQL和MySQL的Stack Overflow上发现了几种方法,但是这些方法都不适用于BigQuery。
有人成功使用BigQuery完成此操作吗? (如何)。所有回复,非常感谢。
答案 0 :(得分:1)
以下是用于BigQuery标准SQL
假定#standardSQL
SELECT
FORMAT_DATE('%b-%Y', created_date) mon_year,
COUNT(1) AS `count`
FROM `project.dataset.table`
GROUP BY mon_year
ORDER BY PARSE_DATE('%b-%Y', mon_year)
字段是DATE数据类型
Row mon_year count
1 Jan-2014 1389
2 Feb-2014 1255
3 Mar-2014 1655
. . .
60 Dec-2018 1677
61 Jan-2019 1534
62 Feb-2019 588
以上查询将产生类似
的内容<?php
$pid = pcntl_fork();
if ($pid > 0)
{
echo "pid: $pid\n";
$status = 0;
pcntl_waitpid($pid, $status);
if (pcntl_wifsignaled($status))
echo "child crashed\n";
if (pcntl_wifexited($status))
echo "child exited normally\n";
if (pcntl_wifstopped($status))
echo "child stopped\n";
}
else if ($pid == 0)
{
$n = 0;
while (++$n < 10)
{
echo ".";
sleep(1);
if ($n == 8)
{
// to cause a crash
// $n = $n / 0;
$a = "a";
unserialize(str_replace('1', 2147483647, serialize($a)));
}
}
}
?>
答案 1 :(得分:0)
使用date_trunc()
:
select date_trunc(created_date, month)as yyyymm, count(*)
from t
group by yyyymm
order by yyyymm;