mysql - TIMESTAMPDIFF 用于不止一种类型

标签 mysql sql

我有这个查询来向我展示付款之间的平均时间差异

SELECT TIMESTAMPDIFF(SECOND, MIN(x.ts), MAX(x.ts) )/(COUNT(DISTINCT(x.ts)) -1) 
as average_minutes_between_paypal_orders 
from (
select p.created_at as ts 
from payment_tokens p 
where status='processed' and payment_method = 'paypal' 
order by created_at desc limit 100
) x

问题是,我希望它单独呈现其他方法(例如“braintree”、“其他”等)之间的平均时间差异,并且我不想编写多个查询。

有没有办法在 1 个查询中单独呈现所有 payment_methods?

最佳答案

使用CASE进行所需计算的一种方法

SELECT 
TIMESTAMPDIFF(SECOND
              ,MIN(CASE WHEN x.payment_method = 'paypal' THEN x.ts END)
              ,MAX(CASE WHEN x.payment_method = 'paypal' THEN x.ts END) )
/(COUNT(DISTINCT(CASE WHEN x.payment_method = 'paypal' THEN x.ts END)) -1)  AS average_minutes_between_paypal_orders ,
TIMESTAMPDIFF(SECOND
              ,MIN(CASE WHEN x.payment_method = 'braintree' THEN x.ts END)
              ,MAX(CASE WHEN x.payment_method = 'braintree' THEN x.ts END) )
/(COUNT(DISTINCT(CASE WHEN x.payment_method = 'braintree' THEN x.ts END)) -1)  AS average_minutes_between_braintree_orders 
FROM (
SELECT p.created_at AS ts 
FROM payment_tokens p 
WHERE `status`='processed'
ORDER BY created_at DESC LIMIT 100
) `x` 

关于mysql - TIMESTAMPDIFF 用于不止一种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25707520/

相关文章:

找不到 mysql_upgrade

mysql - 买家结构按注册日期查询优化

mysql - 连接两个 SQL 查询

mysql - CASE 子句在 SQL 查询中不起作用

sql - 如何在另一个结果列的表达式中重用一个结果列

php - 子查询在 MySQL Workbench 中工作,但在 PHP 中不工作

mysql - 为什么我在 mysql 中的这个查询中出现语法错误

mysql - Tweepy 信息写入 MySQL - 文本被截断

sql - 选择查询不会在 Linux 脚本中给出预期结果

sql - 按地理距离过滤的简单 SQL 查询非常慢