首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >遍历子查询结果以查询同一个表

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

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

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

代码语言:javascript
运行
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
运行
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
运行
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

复制
相关文章
数据库,单表查询,多表查询,子查询
语法:select 段落 from 表明 where binary 字段....................................
小小咸鱼YwY
2019/07/22
5.4K0
MySQL子查询,联结表
子查询:嵌套在其他查询中;执行顺序由里到外。子查询数目没有限制,如果要使用多层查询,注意写好缩进格式,不要出错。
小末快跑
2019/07/03
4.6K0
Oracle函数学习(单表查询和子查询)
–单表查询: –当需要的数据在一张表中,考虑使用单表查询 –多表联合查询: –当需要查询的数据分布在多张表中,考虑使用多表联合 –子查询学习: –使用时机:当查询的筛选条件不明确时,考虑使用子查询。 –单行子查询 –多行子查询
葆宁
2019/04/19
9170
MySQL(联合查询、子查询、分页查询)
2.每列的数据类型必须一致,【查询语句1中字段列表的类型必须和查询语句2中的字段列表类型对应且一致】
全栈开发日记
2022/05/12
16.5K0
MySQL(联合查询、子查询、分页查询)
MySQL 子查询 嵌套查询
意思就是内层的select查到了(至少查到了一行)才进行查询,没有查到就不进行查询。
宁在春
2022/10/31
12.2K0
子查询与子查询的分类(一)
在 SQL 中,子查询是一个查询嵌套在另一个查询中的查询,也被称为内部查询。子查询可以用来创建更复杂的查询,从而实现更高级的数据检索和分析。
堕落飞鸟
2023/05/10
1.8K0
子查询与子查询的分类(二)
子查询可以嵌套在 SELECT、FROM、WHERE 和 HAVING 子句中,以实现更复杂的数据检索和分析。在使用子查询时,需要注意以下几点:
堕落飞鸟
2023/05/10
1.5K0
mysql的查询、子查询及连接查询
一、mysql查询的五种子句 where(条件查询)、having(筛选)、group by(分组)、order by(排序)、limit(限制结果数) 1、where常用运算符: 比较运算符 > , < ,= , != (< >),>= , <= in(v1,v2..vn) between v1 and v2 在v1至v2之间(包含v1,v2) 逻辑运算
java达人
2018/01/31
12.5K0
SQL 从查询结果里查询[通俗易懂]
我想要从从表中查出每天电动车和手机各自的销售总额。这个需求还是蛮简单的,仅仅须要依据createtime和product group by即可了。以下是我写的SQL语句:
全栈程序员站长
2022/07/20
2.8K0
SQL 从查询结果里查询[通俗易懂]
MariaDB 连接查询与子查询
连接是关系数据库模型的主要特点,连接查询是关系数据库中最主要的查询,主要包括内连接、外连接等.通过连接运算符可以实现多个表查询,在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中.当查询数据时,通过连接操作查询出存放在多个表中的不同实体的信息.当两个或多个表中存在相同意义的字段时,便可以通过这些字段对不同的表进行连接查询.
王瑞MVP
2022/12/28
4.5K0
PostgreSQL 子查询
子查询或称为内部查询、嵌套查询,指的是在 PostgreSQL 查询中的 WHERE 子句中嵌入查询语句。
用户5005176
2021/08/11
2.3K0
Hive 子查询
Hive仅在FROM子句中支持子查询(从Hive 0.12版本开始)。必须为子查询指定名称,因为FROM子句中的每个表都必须具有名称。子查询 SELECT 列表中的列必须具有独一无二的名称。子查询 SELECT 列表中的列可以在外部查询中使用,就像使用表中的列一样。子查询也可以是带 UNION 的查询表达式。Hive支持任意级别的子查询。
smartsi
2019/08/07
7K0
MySQL子查询
在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。当获得一个查询的答案需要多个步骤的操作,首先必须创建一个查询来确定用户不知道但包含在数据库中的值,将一个查询块嵌套在另一个查询块的WHERE字句或HAVING短语的条件中查询块称为子查询或内层查询。上层的查询块曾为父查询或外层查询。子查询的结果作为输入传递回“父查询”或“外部查询”。父查询将这个值结合到计算中,以便确定最后的输出。
星哥玩云
2022/09/15
4.9K0
MySQL子查询
MySQL数据高级查询之连接查询、联合查询、子查询[通俗易懂]
1、交叉连接:CROSS JOIN 把表A和表B的数据进行一个NM的组合,即笛卡尔积。如本例会产生44=16条记录,在开发过程中我们肯定是要过滤数据,所以这种很少用。
全栈程序员站长
2022/08/10
6.3K0
MySQL数据高级查询之连接查询、联合查询、子查询[通俗易懂]
【mysql】子查询
子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。
兮动人
2022/03/27
3.5K0
MySQL 子查询
子查询也称为内查询(Inner Query),必须位于括号之中。包含子查询的查询称为外查询(Outer Query)。子查询支持多层嵌套,也就是子查询可以包含其他子查询。
恋喵大鲤鱼
2023/10/12
2830
子查询(2)
如果子查询的执行依赖于外部查询,通常情况下都是因为子查询中的表用到了外部的表,并进行了条件关联,因此每执行一次外部查询,子查询都要重新计算一次,这样的子查询就称之为 关联子查询 。相关子查询按照一行接一行的顺序执行,主查询的每一行都执行一次子查询。
一个风轻云淡
2022/11/13
7840
子查询(2)
mysql创建临时表,将查询结果插入已有表中
        今天遇到一个很棘手的问题,想临时存起来一部分数据,然后再读取。我记得学数据库理论课老师说可以创建临时表,不知道mysql有没有这样的功能呢?临时表在内存之中,读取速度应该比视图快一些。然后还需要将查询的结果存储到临时表中。下面是创建临时表以及插入数据的例子,以供大家参考。 A、临时表再断开于mysql的连接后系统会自动删除临时表中的数据,但是这只限于用下面语句建立的表: 1)定义字段   CREATE TEMPORARY TABLE tmp_table (       name VAR
苦咖啡
2018/05/07
10K0
MySQL 子查询
如果一个select语句能够返回单个值或者一列值,且该select语句嵌套在另一个SQL语句中,那么该select语句称为子查询,通常将子查询写在小括号内。
技能锦囊
2020/05/13
2.8K0
子查询(1)
子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。
一个风轻云淡
2022/11/13
1.2K0
子查询(1)

相似问题

循环遍历mysql子查询结果

11

逐行遍历Oracle SQL查询结果,生成子查询

10

使用Oracle子查询遍历表

10

遍历查询结果

30

TSQL遍历表并执行子查询。

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文