Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >遍历子查询结果以查询同一个表

遍历子查询结果以查询同一个表
EN

Stack Overflow用户
提问于 2019-10-12 06:55:22
回答 1查看 136关注 0票数 1

我有一个包含用户事件数据的表。有些分录是收入事件,有些分录是加载事件。加载事件具有包含URL参数的URL,收入和加载事件都附加了session_id和user_id数据。我编写了一个查询,它将根据过去45天的加载事件的URL参数从该表中提取用户和会话I,然后我希望查找具有匹配的用户和会话I的收入事件,并合计它们的金额。下面是我的第一个问题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT user_id, session_id 
FROM events
WHERE event_type = 'load'
  AND client_id = 1234
  AND calling_url LIKE '%utm_source=so%'
  AND server_stamp BETWEEN DATE_SUB(NOW(), INTERVAL ? DAY) AND NOW()

从单个用户获得收入的查询应该是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT SUM(revenue_subtotal)
FROM events 
WHERE event_type = 'revenue'
  AND client_id = 1234
  AND user_id = 'thisUUID'
  AND session_id = 'thisSID'

因此,我正在尝试找到一种方法来链接这两个查询,以求在SQL中直接从第一个查询返回的所有用户/会话ID组合中获得的收入(所有这些都在一个完整的查询中)。

不幸的是,这个表有很多列,所以给出完整的表定义和完整的样本数据有点困难,但是我认为我已经很好地说明了这一点。请让我知道,但如果需要更多的信息或任何想法,如何实现这一点。到目前为止,我唯一的方法是在PHP中获得第一个查询的结果,然后对返回的每一行执行一次do new查询,但这很容易达到数千,所以如果可能的话,我尽量使用SQL。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-12 07:04:33

没有样本数据,很难100%确定,但你应该能够在client_iduser_idsession_id上进行自连接,以获得你想要的数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT e1.user_id, e1.session_id, COALESCE(SUM(e2.revenue_subtotal), 0) AS revenue
FROM events e1
LEFT JOIN events e2 ON e2.client_id = e1.client_id
                   AND e2.session_id = e1.session_id
                   AND e2.user_id = e1.user_id
                   AND e2.event_type = 'revenue'
WHERE e1.event_type = 'load'
  AND e1.client_id = 1234
  AND e1.calling_url LIKE '%utm_source=so%'
  AND e1.server_stamp BETWEEN DATE_SUB(NOW(), INTERVAL ? DAY) AND NOW()    
GROUP BY e1.user_id, e1.session_id

请注意,我们使用LEFT JOIN以便在没有revenue事件时仍然可以获得结果,并在这些情况下使用COALESCE将输出设为0。

另请注意,此查询需要一个GROUP BY子句来分隔每个事件的结果。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58351662

复制
相关文章
javascript 隐式转换_mysql隐式转换
简单数据类型(也称为原始类型):Undefined、Null、Boolean、Number、String 和 Symbol。ES6 中新增了一种 Symbol 。这种类型的对象永不相等,即始创建的时候传入相同的值,可以解决属性名冲突的问题,做为标记。 复杂数据类型叫 Object(对象)。Object 是一种无序名值对的集合。
全栈程序员站长
2022/11/07
1.6K0
javascript 隐式转换_mysql隐式转换
mysql 隐式类型转换_scala的隐式转换
在mysql查询中,当查询条件左右两侧类型不匹配的时候会发生隐式转换,可能导致查询无法使用索引。下面分析两种隐式转换的情况
全栈程序员站长
2022/11/07
1.9K0
mysql 隐式类型转换_scala的隐式转换
sql的隐式转换_js强制转换和隐式转换
Oracle中对不同类型的处理具有显式类型转换(Explicit)和隐式类型转换(Implicit)两种方式,对于显式类型转换,我们是可控的,但是对于隐式类型转换,当然不建议使用, 因为很难控制,有不少缺点,但是我们很难避免碰到隐式类型转换,如果不了解隐式类型转换的规则,那么往往会改变我们SQL的执行计划,从而可能导致效率降低或其它问题。
全栈程序员站长
2022/11/07
3K0
C# 隐式转换_php隐式转换
预定义的隐式转换总会成功而且不会引发异常,适当合理的用户自定义隐式转换也可以展示出这些 特性。
全栈程序员站长
2022/09/27
1.4K0
mysql 隐式转换_js强制转换和隐式转换
什么鬼,明明查的是204027026112927603,为什么204027026112927605也出来了
全栈程序员站长
2022/11/07
4.9K0
mysql 隐式转换_js强制转换和隐式转换
JS隐式转换_隐式转换是什么
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
1.9K0
php隐式转换,隐式转换如何使用?总结隐式转换实例用法「建议收藏」
JavaScript的数据类型分为六种,分别为null,undefined,boolean,string,number,object。object是引用类型,其它的五种是基本类型或者是原始类型。我们可以用typeof方法打印来某个是属于哪个类型的。不同类型的变量比较要先转类型,叫做类型转换,类型转换也叫隐式转换。隐式转换通常发生在运算符加减乘除,等于,还有小于,大于等。。typeof ’11’ //string
全栈程序员站长
2022/11/10
1.7K0
php隐式转换,隐式转换如何使用?总结隐式转换实例用法「建议收藏」
spark隐式转换 toDf_隐式转换是什么
解决方案就是自己定义一个隐式转换函数,double2int。这个隐士函数的功能也需要是唯一的
全栈程序员站长
2022/11/10
1.1K0
spark隐式转换 toDf_隐式转换是什么
scala 隐式转换
Scala 中可以让函数库调用变得更加方便的隐式变换和隐式参数,以及如何通过它们来避免一些繁琐和显而易见的细节问题。 内容主要包括 implicits 的使用规则、隐含类型转换、转换被方法调用的对象等
全栈程序员站长
2022/11/10
1.1K0
关于隐式转换
昨天,一个读者向我提交了一个问题,请我就SQL server 隐式转换发表一些看法。当SQL server遇到一个不匹配类型的表达式的时候,它有两种选择。它使用隐式转换并能够执行或者转换错误而导致执行失败。在深入隐式转换之前,让我们假定错误的情形。
Leshami
2022/03/08
7690
scala隐式转换[通俗易懂]
在之前的章节中有使用到隐式转换:scala 使用jackson解析json成对象
全栈程序员站长
2022/11/08
7600
Oracle的隐式转换
都说Oracle存在NUMBER和VARCHAR2类型的隐式转换,严格意义上需要避免,但为何需要避免,从下面的实验进行验证。 1. 创建测试表和索引 create table tn (id number, name varchar2(1));
bisal
2019/01/29
9200
MySQL隐式转换
当运算符与不同类型的操作数一起使用时,将进行类型转换以使操作数兼容。某些转换是隐式发生的。 官方给的定义些许抽象,下面看例子。 有车辆表vehicle。
关忆北.
2023/10/11
1900
MySQL隐式转换
MySQL隐式类型注入与隐式转换
在MySQL中执行SQL查询时,如果SQL语句中字段的数据类型和表中对应字段的数据类型不一致时,MySQL查询优化器会将数据的类型进行隐式转换。
Petrochor
2022/06/07
1.3K0
MySQL隐式类型注入与隐式转换
Scala 【 14 隐式转换与隐式参数 】
​ Scala 的隐式转换,其实最核心的就是定义隐式转换函数,即 implicit conversion function 。
Lokinli
2023/03/09
8250
「  [学习记录] JS 类型转换 - 隐式转换  」
简单来说就是,在比较运算过程中,基本数据类型会隐式转换,复杂数据类型不能隐式转换,但会使用toString()转成字符串,然后再进行隐式转换
青益
2023/01/09
5.2K0
「  [学习记录] JS 类型转换 - 隐式转换  」
oracle隐式转换和显式转换_oracle显示游标和隐式
和其他的关系型数据库一样, oracle 中也能进行一些隐式的数据转换,这对我们写 SQL 语句有 非常 用,我们可以不必麻烦地手动转化很多类型的字符。虽然前面我们介绍了一些使用例如to_char,to_date的函数进行强制转换的方法,但是隐式转换也还是不错的。 Orac
全栈程序员站长
2022/11/10
1K0
Scala基础——隐式转换
Scala的隐式转换,其实最核心的就是定义隐式转换函数,即implicitconversion function。定义的隐式转换函数,只要在编写的程序内引入,就会被Scala自动使用。Scala会根据隐式转换函数的签名,在程序中使用到隐式转换函数接收的参数类型定义的对象时,会自动将其传入隐式转换函数,转换为另外一种类型的对象并返回。这就是“隐式转换”。 通常建议将隐式转换函数的名称命名为“one2one”的形式。 隐式转换函数与普通函数唯一的语法区别就是,要以implicit开头,而且最好要定义函数返回类型。
羊羽shine
2019/08/16
7270
JavaScript类型隐式转换
JavaScript 的数据类型之前已经讲过了,忘记的小伙伴出门左转,查看搞懂 JavaScript 的数据类型
闲花手札
2023/10/17
2130
JavaScript简单隐式转换
今天在帮后台写一个页面的时候,发现了一个问题,字符串的true或者false,怎么才能转换成布尔类型的?我毫不犹豫的用了Boolean,结果就是发现页面都显示的是true的效果。随后查了一下有没有方法转换,查到的居然都是去判断。
wade
2020/04/23
5800

相似问题

在后台运行时显示弹出窗口?

31

请求小米设备的运行时权限

14

弹出窗口启用

22

通过弹出窗口启用对辅助设备的访问

10

在后台运行时显示弹出窗口的权限

273
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文