Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
聚合MySQL子查询的结果_Mysql_Sql - Fatal编程技术网

聚合MySQL子查询的结果

聚合MySQL子查询的结果,mysql,sql,Mysql,Sql,请提供建议,如果这个标题没有意义 我正在做一个简单的(ish)统计查询,我有两列是查看项目时的开始时间和结束时间。我想做的是返回您可以将某个项目的视图分类为反弹的次数 目前查询能够返回所有必要的信息,到目前为止相当简单,但这部分我遇到了一些问题 我确信这是目前错误的方法 IF(((UNIX_TIMESTAMP(v.time_ended) - UNIX_TIMESTAMP(v.time_started)) < 5), 1,0) bounce 如果((UNIX\u时间戳(v.time\u结束

请提供建议,如果这个标题没有意义

我正在做一个简单的(ish)统计查询,我有两列是查看项目时的开始时间和结束时间。我想做的是返回您可以将某个项目的视图分类为反弹的次数

目前查询能够返回所有必要的信息,到目前为止相当简单,但这部分我遇到了一些问题

我确信这是目前错误的方法

IF(((UNIX_TIMESTAMP(v.time_ended) - UNIX_TIMESTAMP(v.time_started)) < 5), 1,0) bounce
如果((UNIX\u时间戳(v.time\u结束)-UNIX\u时间戳(v.time\u开始))<5,则1,0)反弹
我需要尝试获取每行的UNIX_时间戳(v.time_ended)并从UNIX_时间戳(v.time_start)中扣除它,查看该值是否小于5,我将其归类为“bounce”,如果小于5,则返回bounce列

我只返回1行数据,不知道如何执行,如果有任何帮助,我们将不胜感激

谢谢

琼尼

更新代码

SELECT i.id, 
i.title, 
i.slug, 
i.buyer_id as buyer_id, 
i.date_added as date_added, 
a.slug as area_slug, 
COUNT(o.id) as offers, 
COUNT(v.item_id) as total_item_views, 
(COUNT(v.item_id) / COUNT(o.id)) conversion,

SUM(CASE WHEN v.time_ended - v.time_started < 5 THEN 1 ELSE 0 END) 

FROM item as i
LEFT JOIN offer as o ON i.id=o.item_id
LEFT JOIN viewed_item as v ON i.id=v.item_id
INNER JOIN area as a ON a.id=i.area_id

WHERE i.id=3
选择i.id,
i、 头衔,
i、 鼻涕虫,
i、 买方id作为买方id,
i、 添加日期作为添加日期,
a、 段塞作为区域_段塞,
将(o.id)计算为报价,
将(v.item\u id)计数为总的\u item\u视图,
(计数(v.item_id)/计数(o.id))转换,
总和(当v.time_结束时的情况-v.time_开始时小于5,然后为1,否则为0结束)
从我的项目
i.id=o.item\U id上的o左加入报价
左连接已将项目视为i.id上的v=v.item\U id
a.id=i.area\u id上作为a的内部连接区域
其中i.id=3

我想你想要这样的东西:

SELECT Item
      ,SUM(CASE WHEN v.time_ended - v.time_started < 5 THEN 1 ELSE 0 END))
FROM table
GROUP BY Item
选择项目
,求和(当v.time_结束时的情况-v.time_开始时<5,则为1,否则为0结束时的情况))
从桌子上
按项目分组
从更新的代码中,您总共丢失了一个组:

SELECT i.id, i.title, i.slug, i.buyer_id as buyer_id, i.date_added as date_added, a.slug as area_slug, 
    COUNT(o.id) as offers, 
    COUNT(v.item_id) as total_item_views, 
    (COUNT(v.item_id) / COUNT(o.id)) conversion,
    SUM(CASE WHEN v.time_ended - v.time_started < 5 THEN 1 ELSE 0 END) 
FROM item as i
LEFT JOIN offer as o ON i.id=o.item_id
LEFT JOIN viewed_item as v ON i.id=v.item_id
INNER JOIN area as a ON a.id=i.area_id
WHERE i.id=3
GROUP BY  i.id, i.title, i.slug, i.buyer_id, i.date_added, a.slug
选择i.id、i.title、i.slug、i.buyer\u id作为buyer\u id、i.date\u添加为date\u添加、a.slug作为area\u slug,
将(o.id)计算为报价,
将(v.item\u id)计数为总的\u item\u视图,
(计数(v.item_id)/计数(o.id))转换,
总和(当v.time_结束时的情况-v.time_开始时小于5,然后为1,否则为0结束)
从我的项目
i.id=o.item\U id上的o左加入报价
左连接已将项目视为i.id上的v=v.item\U id
a.id=i.area\u id上作为a的内部连接区域
其中i.id=3
按i.id、i.title、i.slug、i.buyer\u id、i.date\u added、a.slug分组

好的,我尝试了:选择。。。。(所有列和计数),总和(当v.time_结束时的情况-v.time_开始时小于5,然后为1,否则为0结束)作为从项目跳出i.id=o.item_id作为a离开加入报价i.id=o.item_id离开加入查看的_项目作为v在i.id=v.item_id内部加入区域作为a在a.id=i.area_id其中i.id=3按跳出顺序。说我不能在“bounce”上分组。从组中删除bounce by,您只能在非聚合字段上分组。看起来您的代码被切断了,所以无法确定是否还有其他问题,如果从组中删除bounce不起作用,请在您的问题中添加完整的代码。更新的答案。这就是你想要的输出吗?是的,谢谢+1.查询实际上在没有GROUPBY子句的情况下工作。