第七篇: BigQuery中的复杂SQL查询
BigQuery中的复杂SQL查询
背景与目标
在数据分析中,我们通常需要从多个数据源中获取信息,以便进行深入的分析。这时,BigQuery提供的JOIN、UNION和子查询等复杂SQL语句非常实用。本文将以Google BigQuery的公共数据集为例,介绍如何使用这些高级SQL操作,并展示具体的使用场景,如从人口统计数据和城市服务请求中获取洞察。
1. JOIN操作:整合多表信息
在多表分析中,JOIN用于合并相关的表数据。例如,假设我们希望查看2000至2010年间美国常见的女性名字及旧金山的311服务请求类型。这个分析可以帮助我们在城市服务和人口统计之间发现潜在的联系。
SELECTnames.name AS popular_name,names.year AS year,requests.category AS service_request,requests.created_date AS request_date
FROM`bigquery-public-data.usa_names.usa_1910_current` AS names
JOIN`bigquery-public-data.san_francisco.311_service_requests` AS requests
ONnames.year = EXTRACT(YEAR FROM requests.created_date)
WHEREnames.gender = "F"AND names.year BETWEEN 2000 AND 2010
LIMIT 100;
查询结果示例:
popular_name year service_request
Emma 2008 311 External Request
Abigail 2008 311 External Request
Ava 2008 311 External Request
Sophia 2008 311 External Request
Isabella 2008 311 External Request
...
2. UNION操作:合并多个数据源
UNION操作适用于字段结构相似的多表合并,例如合并不同城市的311服务请求。
SELECT "San Francisco" AS city,category as request_type,created_date as requested_date
FROM`bigquery-public-data.san_francisco.311_service_requests`
UNION ALL
SELECT "New York" AS city,complaint_type AS request_type,created_date AS requested_date
FROM`bigquery-public-data.new_york_311.311_service_requests`;`
此查询将旧金山和纽约的311服务请求整合在一个表中,使我们可以在一个表中查看两地的公共服务需求数据。
3. 子查询:嵌套查询实现高级筛选
子查询用于从一个查询的结果中进一步筛选或聚合数据。例如,我们希望在旧金山市2019年最常见的五个服务请求中找到每个请求类型的平均处理时间。
SELECT main.category,AVG(main.request_duration) AS avg_duration
FROM (SELECT category,TIMESTAMP_DIFF(closed_date, created_date, MINUTE) AS request_durationFROM `bigquery-public-data.san_francisco.311_service_requests`WHERE EXTRACT(YEAR FROM created_date) = 2016
) AS main
GROUP BY main.category
ORDER BY avg_duration DESC
LIMIT 5
查询结果示例:
category avg_duration
SFHA Requests 696681.24735376
General Request - HUMAN RESOURCES 562258.918918919
General Request - MEDICAL EXAMINER 561643.0
General Request - CONVENTION FACILITIES 546616.0
General Request - STATUS OF WOMEN 532976.0
解释:
- 内部查询从旧金山的311服务请求数据中提取2016年的请求类型和每个请求的处理时间。
- 外部查询通过聚合函数
AVG计算每种服务类型的平均处理时间,并按时间排序。

总结
BigQuery提供了强大的JOIN、UNION和子查询操作,帮助我们更灵活地整合和分析多来源数据。这些操作在业务分析和数据仓库管理中非常实用,通过合理应用这些SQL操作,可以有效提高数据分析的深度和效率。
相关文章:
第七篇: BigQuery中的复杂SQL查询
BigQuery中的复杂SQL查询 背景与目标 在数据分析中,我们通常需要从多个数据源中获取信息,以便进行深入的分析。这时,BigQuery提供的JOIN、UNION和子查询等复杂SQL语句非常实用。本文将以Google BigQuery的公共数据集为例,介绍如何…...
【SQL实验】高级查询(难点.三)含附加数据库操作
完整代码在文章末尾【代码是自己的解答,并非标准答案,也有可能写错,文中可能会有不准确或待完善之处,恳请各位读者不吝批评指正,共同促进学习交流】 将素材中的“学生管理”数据库附加到SQL SERVER中,完成以…...
qt QFileSystemModel详解
1、概述 QFileSystemModel是Qt框架中的一个关键类,它继承自QAbstractItemModel,专门用于在Qt应用程序中展示文件系统的数据。这个模型提供了一个方便的接口,使得开发者可以轻松地在应用程序中集成文件和目录的树形结构,并通过视图…...
element plus中修改el-table的样式
文章目录 前情提要相关环境package.jsonvue代码结果 方式一直接看代码 方式二直接看代码 前情提要 因为项目中用到el-table的时候,需要将el-table表格的样式进行修改,将整个表格的背景颜色从白色变成透明,使得表格变得透明之后,展…...
深入理解封装与接口:Java程序设计的核心思想与最佳实践
目录 一、封装的优点 二、接口与默认方法 三、总结 在面向对象编程(OOP)中,封装(Encapsulation)是一个核心概念,Java对其进行了良好的支持。封装不仅有助于提高代码的安全性,还能够增强代码的…...
linux 下调试 mpu6050 三轴加速度
供自己备忘; 1. 参考资料: b 站视频 https://www.bilibili.com/video/BV1cL4y1x7FA/?spm_id_from333.337.search-card.all.click&vd_sourced7a07b8689c9e646f0214227c06f304c csdn 其它博客 https://blog.csdn.net/qq_65198598/article/detail…...
C语言心型代码解析
方法一 心型极坐标方程 爱心代码你真的理解吗 笛卡尔的心型公式: for (y 1.5; y > -1.5; y - 0.1) for (x -1.5; x < 1.5; x 0.05) 代码里面用了二个for循环,第一个代表y轴,第二个代表x轴 二个增加的单位不同,能使得…...
【LeetCode】【算法】647. 回文子串
LeetCode 647.回文子串 题目描述 给你一个字符串s,请你统计并返回这个字符串中回文子串的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串是字符串中的由连续字符组成的一个序列。 思路 思路:中心拓展法 中心拓展法的意思是说…...
介绍6种常见的基于知识图谱推荐算法的类型和各自的优缺点
基于知识图谱的推荐算法有多种,每种算法各有其优点和缺点。下面是一些常见的基于知识图谱的推荐算法及其分析: 基于邻域的协同过滤(Collaborative Filtering) 描述:通过分析用户之间的相似性或项目之间的相似性来进行…...
使用python拟合二元曲线系数
python import numpy as np import pandas as pd注: xlsx 表格中 有 压力P,流量值Q,温度值 K; df pd.read_excel("./i100-10000slm.xlsx",usecols[p1,molboxQm,Dek]) #print(df.head())#column_data df[p1] # 获取行数…...
go 集成viper 配置管理
安装viper go get github.com/spf13/viper 配置文件 读取配置文件 package confimport ("fmt""github.com/spf13/viper" )func Properties() {viper.SetConfigName("application")viper.SetConfigType("yml")viper.AddConfigPath(&q…...
Java:数据结构-再谈String类
字符串常量池 首先我们来思考这段代码,为什么运行结果一个是true,一个是false呢? public class Test {public static void main(String[] args) {String s1"123";String s2"123";String s3new String("555")…...
斗破QT编程入门系列之二:GUI应用程序设计基础:UI文件(四星斗师)
斗破Qt目录: 斗破Qt编程入门系列之前言:认识Qt:Qt的获取与安装(四星斗师) 斗破QT编程入门系列之一:认识Qt:初步使用(四星斗师) 斗破QT编程入门系列之二:认识…...
微服务实战系列之玩转Docker(十八)
导览 前言Q:如何保障容器云环境下etcd集群的数据安全一、安全机制身份认证必学必看1. 启动参数2. 授权命令3. 开启认证 二、应用实践1. 访问容器2. 查看认证是否开启3. 查看是否已创建用户4. 创建用户5. 开启认证6. 验证是否开启7. 验证数据 结语系列回顾 前言 etc…...
Javascript 获取设备信息 工具
JS获取设备信息(操作系统信息、地理位置、UUID、横竖屏状态、设备类型、网络状态、浏览器信息、生成浏览器指纹、日期、生肖、周几等) Get Device Info Online GitHub - skillnull/DeviceJs: JS获取设备信息(操作系统信息、地理位置、UUID、横竖屏状态、设备类型、网络状态、浏…...
基于开源 AI 智能名片、S2B2C 商城小程序的用户获取成本优化分析
摘要:本文围绕用户获取成本(CAC)这一关键指标展开深入剖析,详细阐述其计算方式,并紧密结合开源 AI 智能名片与 S2B2C 商城小程序的独特性质,从多个维度探讨如何通过挖掘新的获客渠道、巧妙运用私域流量池等…...
仿真APP助力汽车零部件厂商打造核心竞争力
汽车零部件是汽车工业的基石,是构成车辆的基础元素。一辆汽车通常由上万件零部件组成,包括发动机系统、传动系统、制动系统、电子控制系统等,它们共同确保了汽车的安全、可靠性及高效运行。 在汽车产业快速发展的今天,汽车零部件…...
vue实现websocket实时短消息通知
1、原理 websocket就是通过服务器向客户端推送消息,客户端也可以主动向服务器发送消息,是真正的双向平等对话,是一种长连接,只需要通过一次请求进行初始化。 2、事件 onopen: 客户端和服务器建立连接后触发,被称为客…...
tinymce扩展功能:1、行高、段落间距、格式刷;2、视频上传进度条;3、对复制的图片设置尺寸
tinymce扩展功能:1、行高、段落间距、格式刷;2、视频上传进度条;3、对复制的图片设置尺寸 一、需求描述二、行高、段落间距、格式刷插件三、实现视频上传的进度条、对复制的图片设置尺寸 一、需求描述 使用技术: vue2 tinymce5.…...
计算机毕业设计Python+图神经网络手机推荐系统 手机价格预测 手机可视化 手机数据分析 手机爬虫 Django Flask Spark 知识图谱
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
程序员AI大模型转型:从入门到精通,轻松掌握大模型开发,高薪职位等你来拿!
在人工智能(AI)迅速发展的背景下,从传统的编程领域如Java程序员转向大模型开发是一个既充满挑战也充满机遇的过程。对于 Java 程序员来说,这也是一个实现职业转型、提升薪资待遇的绝佳机遇。 一、明确大模型概念 简单来说…...
一文搞懂工业机器人通讯协议:TCP/IP、Modbus与专用协议对比
在我十年的工控开发生涯中,通讯问题永远是项目延期的第一大原因。我见过太多团队花了几个月时间做运动控制和视觉算法,最后却卡在了机器人通讯上:要么是数据传输不稳定,要么是速度跟不上产线节拍,要么是换个品牌机器人就要全部重写代码。 很多新手工程师觉得通讯就是&quo…...
从Harness走向Coordination,openJiuwen社区发布JiuwenSwarm,引领多智能体协作新范式
刚刚,华为支持的开源 AI Agent 平台社区 openJiuwen 发布并开源了 JiuwenSwarm。 这是一个面向多智能体协作的蜂群智能体。让多个 AI 智能体像蜂群一样高效协作、自主演进,正式按下 "群体智能" 的加速键,开启 AI 时代的 "养蜂…...
Perplexity症状查询功能突然失效?排查清单来了:从OpenID Connect令牌过期、UMLS MetaMap服务中断到本地缓存污染的6层故障树分析
更多请点击: https://codechina.net 第一章:Perplexity症状查询功能突然失效?排查清单来了:从OpenID Connect令牌过期、UMLS MetaMap服务中断到本地缓存污染的6层故障树分析 当Perplexity的症状查询接口返回 401 Unauthorized 或…...
从ARM Cortex-M到FPGA:手把手教你用AXI4-Lite搭建自定义外设(以Zynq-7000为例)
从ARM Cortex-M到FPGA:用AXI4-Lite实现自定义外设的工程实践 在嵌入式系统开发中,处理器与可编程逻辑的高效协同一直是提升性能的关键路径。当标准外设无法满足特定需求时,工程师往往需要在FPGA中设计定制硬件模块,并通过标准化总…...
【2026】知云文献翻译安装使用指南:学术PDF划选即译,研究生必备工具
读英文文献最烦的不是词汇,是格式。复制到翻译软件,格式全乱、公式变问号、图注和正文混在一起。知云文献翻译的解法是直接在PDF里划选翻译,格式不动,原文译文左右对照,不用来回切换窗口。 这篇从安装到核心功能配置一…...
手把手教你用Docker Compose部署Jitsi Meet视频会议,并解决“断开链接”的坑
从零构建高可用Jitsi Meet视频会议系统:Docker Compose实战与深度排错指南 在远程协作成为常态的今天,搭建自主可控的视频会议系统已成为许多技术团队的基础需求。Jitsi Meet作为开源的WebRTC视频会议解决方案,凭借其出色的音视频质量和灵活的…...
Linux离线包缓存自动化巡检实践
Linux离线包缓存自动化巡检实践这是一篇面向中级 Linux 使用者的技术文章,主题聚焦在离线包缓存,重点讨论无外网安装、本地缓存和依赖完整性。在真实生产环境中,离线包缓存相关问题往往不会以单一错误形式出现,而是混杂在日志、权…...
EC35编码器驱动踩坑实录:从波形分析到稳定读取,我的GD32调试笔记
EC35编码器驱动踩坑实录:从波形分析到稳定读取的GD32调试笔记 1. 问题初现:那些让人抓狂的"玄学"现象 第一次把EC35编码器接到GD32F303开发板上时,我天真地以为这不过是个简单的GPIO中断应用。按照常规思路配置了三个引脚的中断&am…...
避开CASA模型NPP估算的那些坑:我的IDL代码调试与参数优化心得
避开CASA模型NPP估算的那些坑:我的IDL代码调试与参数优化心得 第一次用CASA模型估算NPP时,我对着屏幕上的异常结果发呆了半小时——明明按照教程一步步操作,为什么输出的NPP值会出现大面积负值?后来才发现,温度胁迫因子…...
