当前位置: 首页 > news >正文

第七篇: BigQuery中的复杂SQL查询

BigQuery中的复杂SQL查询

背景与目标
在数据分析中,我们通常需要从多个数据源中获取信息,以便进行深入的分析。这时,BigQuery提供的JOINUNION和子查询等复杂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提供了强大的JOINUNION和子查询操作,帮助我们更灵活地整合和分析多来源数据。这些操作在业务分析和数据仓库管理中非常实用,通过合理应用这些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语言心型代码解析

方法一 心型极坐标方程 爱心代码你真的理解吗 笛卡尔的心型公式&#xff1a; for (y 1.5; y > -1.5; y - 0.1) for (x -1.5; x < 1.5; x 0.05) 代码里面用了二个for循环&#xff0c;第一个代表y轴&#xff0c;第二个代表x轴 二个增加的单位不同&#xff0c;能使得…...

【LeetCode】【算法】647. 回文子串

LeetCode 647.回文子串 题目描述 给你一个字符串s&#xff0c;请你统计并返回这个字符串中回文子串的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串是字符串中的由连续字符组成的一个序列。 思路 思路&#xff1a;中心拓展法 中心拓展法的意思是说&#xf…...

介绍6种常见的基于知识图谱推荐算法的类型和各自的优缺点

基于知识图谱的推荐算法有多种&#xff0c;每种算法各有其优点和缺点。下面是一些常见的基于知识图谱的推荐算法及其分析&#xff1a; 基于邻域的协同过滤&#xff08;Collaborative Filtering&#xff09; 描述&#xff1a;通过分析用户之间的相似性或项目之间的相似性来进行…...

使用python拟合二元曲线系数

python import numpy as np import pandas as pd注&#xff1a; xlsx 表格中 有 压力P&#xff0c;流量值Q&#xff0c;温度值 K&#xff1b; 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类

字符串常量池 首先我们来思考这段代码&#xff0c;为什么运行结果一个是true&#xff0c;一个是false呢&#xff1f; public class Test {public static void main(String[] args) {String s1"123";String s2"123";String s3new String("555")…...

斗破QT编程入门系列之二:GUI应用程序设计基础:UI文件(四星斗师)

斗破Qt目录&#xff1a; 斗破Qt编程入门系列之前言&#xff1a;认识Qt&#xff1a;Qt的获取与安装&#xff08;四星斗师&#xff09; 斗破QT编程入门系列之一&#xff1a;认识Qt&#xff1a;初步使用&#xff08;四星斗师&#xff09; 斗破QT编程入门系列之二&#xff1a;认识…...

微服务实战系列之玩转Docker(十八)

导览 前言Q&#xff1a;如何保障容器云环境下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 商城小程序的用户获取成本优化分析

摘要&#xff1a;本文围绕用户获取成本&#xff08;CAC&#xff09;这一关键指标展开深入剖析&#xff0c;详细阐述其计算方式&#xff0c;并紧密结合开源 AI 智能名片与 S2B2C 商城小程序的独特性质&#xff0c;从多个维度探讨如何通过挖掘新的获客渠道、巧妙运用私域流量池等…...

仿真APP助力汽车零部件厂商打造核心竞争力

汽车零部件是汽车工业的基石&#xff0c;是构成车辆的基础元素。一辆汽车通常由上万件零部件组成&#xff0c;包括发动机系统、传动系统、制动系统、电子控制系统等&#xff0c;它们共同确保了汽车的安全、可靠性及高效运行。 在汽车产业快速发展的今天&#xff0c;汽车零部件…...

vue实现websocket实时短消息通知

1、原理 websocket就是通过服务器向客户端推送消息&#xff0c;客户端也可以主动向服务器发送消息&#xff0c;是真正的双向平等对话&#xff0c;是一种长连接&#xff0c;只需要通过一次请求进行初始化。 2、事件 onopen: 客户端和服务器建立连接后触发&#xff0c;被称为客…...

tinymce扩展功能:1、行高、段落间距、格式刷;2、视频上传进度条;3、对复制的图片设置尺寸

tinymce扩展功能&#xff1a;1、行高、段落间距、格式刷&#xff1b;2、视频上传进度条&#xff1b;3、对复制的图片设置尺寸 一、需求描述二、行高、段落间距、格式刷插件三、实现视频上传的进度条、对复制的图片设置尺寸 一、需求描述 使用技术&#xff1a; vue2 tinymce5.…...

计算机毕业设计Python+图神经网络手机推荐系统 手机价格预测 手机可视化 手机数据分析 手机爬虫 Django Flask Spark 知识图谱

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

程序员AI大模型转型:从入门到精通,轻松掌握大模型开发,高薪职位等你来拿!

在人工智能&#xff08;AI&#xff09;迅速发展的背景下&#xff0c;从传统的编程领域如Java程序员转向大模型开发是一个既充满挑战也充满机遇的过程。对于 Java 程序员来说&#xff0c;这也是一个实现职业转型、提升薪资待遇的绝佳机遇。 一、明确大模型概念 简单来说&#xf…...

一文搞懂工业机器人通讯协议:TCP/IP、Modbus与专用协议对比

在我十年的工控开发生涯中,通讯问题永远是项目延期的第一大原因。我见过太多团队花了几个月时间做运动控制和视觉算法,最后却卡在了机器人通讯上:要么是数据传输不稳定,要么是速度跟不上产线节拍,要么是换个品牌机器人就要全部重写代码。 很多新手工程师觉得通讯就是&quo…...

从Harness走向Coordination,openJiuwen社区发布JiuwenSwarm,引领多智能体协作新范式

刚刚&#xff0c;华为支持的开源 AI Agent 平台社区 openJiuwen 发布并开源了 JiuwenSwarm。 这是一个面向多智能体协作的蜂群智能体。让多个 AI 智能体像蜂群一样高效协作、自主演进&#xff0c;正式按下 "群体智能" 的加速键&#xff0c;开启 AI 时代的 "养蜂…...

Perplexity症状查询功能突然失效?排查清单来了:从OpenID Connect令牌过期、UMLS MetaMap服务中断到本地缓存污染的6层故障树分析

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity症状查询功能突然失效&#xff1f;排查清单来了&#xff1a;从OpenID Connect令牌过期、UMLS MetaMap服务中断到本地缓存污染的6层故障树分析 当Perplexity的症状查询接口返回 401 Unauthorized 或…...

从ARM Cortex-M到FPGA:手把手教你用AXI4-Lite搭建自定义外设(以Zynq-7000为例)

从ARM Cortex-M到FPGA&#xff1a;用AXI4-Lite实现自定义外设的工程实践 在嵌入式系统开发中&#xff0c;处理器与可编程逻辑的高效协同一直是提升性能的关键路径。当标准外设无法满足特定需求时&#xff0c;工程师往往需要在FPGA中设计定制硬件模块&#xff0c;并通过标准化总…...

【2026】知云文献翻译安装使用指南:学术PDF划选即译,研究生必备工具

读英文文献最烦的不是词汇&#xff0c;是格式。复制到翻译软件&#xff0c;格式全乱、公式变问号、图注和正文混在一起。知云文献翻译的解法是直接在PDF里划选翻译&#xff0c;格式不动&#xff0c;原文译文左右对照&#xff0c;不用来回切换窗口。 这篇从安装到核心功能配置一…...

手把手教你用Docker Compose部署Jitsi Meet视频会议,并解决“断开链接”的坑

从零构建高可用Jitsi Meet视频会议系统&#xff1a;Docker Compose实战与深度排错指南 在远程协作成为常态的今天&#xff0c;搭建自主可控的视频会议系统已成为许多技术团队的基础需求。Jitsi Meet作为开源的WebRTC视频会议解决方案&#xff0c;凭借其出色的音视频质量和灵活的…...

Linux离线包缓存自动化巡检实践

Linux离线包缓存自动化巡检实践这是一篇面向中级 Linux 使用者的技术文章&#xff0c;主题聚焦在离线包缓存&#xff0c;重点讨论无外网安装、本地缓存和依赖完整性。在真实生产环境中&#xff0c;离线包缓存相关问题往往不会以单一错误形式出现&#xff0c;而是混杂在日志、权…...

EC35编码器驱动踩坑实录:从波形分析到稳定读取,我的GD32调试笔记

EC35编码器驱动踩坑实录&#xff1a;从波形分析到稳定读取的GD32调试笔记 1. 问题初现&#xff1a;那些让人抓狂的"玄学"现象 第一次把EC35编码器接到GD32F303开发板上时&#xff0c;我天真地以为这不过是个简单的GPIO中断应用。按照常规思路配置了三个引脚的中断&am…...

避开CASA模型NPP估算的那些坑:我的IDL代码调试与参数优化心得

避开CASA模型NPP估算的那些坑&#xff1a;我的IDL代码调试与参数优化心得 第一次用CASA模型估算NPP时&#xff0c;我对着屏幕上的异常结果发呆了半小时——明明按照教程一步步操作&#xff0c;为什么输出的NPP值会出现大面积负值&#xff1f;后来才发现&#xff0c;温度胁迫因子…...