Sql 一组日期的标准偏差
我有一个列为Sql 一组日期的标准偏差,sql,postgresql,statistics,Sql,Postgresql,Statistics,我有一个列为id | client_id | datetime的交易表,我计算了交易之间的平均天数,以了解每个客户进行交易的频率: SELECT *, ((date_last_transaction - date_first_transaction)/total_transactions) AS frequency FROM ( SELECT client_id, COUNT(id) AS total_transactions, MIN(datetime) AS date_first_
id | client_id | datetime
的交易表,我计算了交易之间的平均天数,以了解每个客户进行交易的频率:
SELECT *, ((date_last_transaction - date_first_transaction)/total_transactions) AS frequency
FROM (
SELECT client_id, COUNT(id) AS total_transactions, MIN(datetime) AS date_first_transaction, MAX(datetime) AS date_last_transaction
FROM transactions
GROUP BY client_id
) AS t;
使用postgresql计算一组日期的标准偏差(以天为单位)的现有方法是什么?如果可能的话,最好只使用一个查询:-)我发现这样做:
SELECT extract(day from date_trunc('day', (
CASE WHEN COUNT(*) <= 1 THEN
0
ELSE
SUM(time_since_last_invoice)/(COUNT(*)-1)
END
) * '1 day'::interval)) AS days_between_purchases,
extract(day from date_trunc('day', (
CASE WHEN COUNT(*) <= 2 THEN
0
ELSE
STDDEV(time_since_last_invoice)
END
) * '1 day'::interval)) AS range_of_days
FROM (
SELECT client_id, datetime, COALESCE(datetime - lag(datetime)
OVER (PARTITION BY client_id ORDER BY client_id, datetime
ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING
), 0
) AS time_since_last_invoice
FROM my_table
GROUP BY client_id, datetime
ORDER BY client_id, datetime
)
选择提取日期(从日期算起的日期)(
当COUNT(*)stddev_samp()可能时,下面是列表:向下滚动到“表9-44.统计的聚合函数”