在 Amazon Quicksight 上使用 SQL 从多个表中提取相同的列
Pulling the same column from multiple tables using SQL on Amazon Quick Sight
我正在使用 Amazon Quick Sight 从 MySQL 数据库中提取数据,为我的雇主生成视觉数据。我是一名学生,有一点 SQL 经验,但以前从未处理过这么大的数据库。
我需要从中获取的表是 001_leads 到 024_leads。这些表都是以相同的方式设计的。
这是我目前一直在做的无济于事。 Quick Sight 不会返回很好的错误警报,所以我一直在研究不同的解决方案。
SELECT 001_leads.lead_received AS "City-A Leads Q1",
002_leads.lead_received AS "City-B Leads Q1"
FROM 001_leads, 002_leads
WHERE lead_received BETWEEN '2017-01-01' AND '2017-04-01'
我很确定我需要使用联接,但我不知道如何联接 24 个不同的表。
理想情况下,当此查询运行时,它将显示来自每个城市的每条线索。
感谢观看:)
编辑:
我认为 Union 是您所追求的...不完全确定,您问题的措辞。
例如
SELECT 001_leads.lead_received AS Leads
FROM 001_leads
WHERE lead_received BETWEEN '2017-01-01' AND '2017-04-01'
UNION
SELECT 002_leads.lead_received
FROM 002_leads
WHERE lead_received BETWEEN '2017-01-01' AND '2017-04-01'
更新
以下内容应该按照您所说的那样进行。
SELECT l1.lead_received AS LeadsCityA, l2.lead_received AS LeadsCityA, l3.lead_received AS LeadsCityA, l4.lead_received AS LeadsCityA
FROM 001_leads l1
LEFT JOIN 002_leads l2
ON lead_received BETWEEN '2017-01-01' AND '2017-04-01'
LEFT JOIN 003_leads l3
ON lead_received BETWEEN '2017-01-01' AND '2017-04-01'
LEFT JOIN 004_leads l4
ON lead_received BETWEEN '2017-01-01' AND '2017-04-01'
WHERE lead_received BETWEEN '2017-01-01' AND '2017-04-01'
除非你真的需要一个枢轴table,否则我建议使用联合并为每个潜在客户获取一行,就像@Darby 建议的那样:
SELECT *
FROM (
SELECT
'CityA' as `city`,
a.*
FROM `001_leads` a
WHERE a.`lead_received` BETWEEN '2017-01-01' AND '2017-04-01'
UNION
SELECT
'CityB' as `city`,
b.*
FROM `001_leads` b
WHERE b.`lead_received` BETWEEN '2017-01-01' AND '2017-04-01'
UNION
SELECT
'CityC' as `city`,
c.*
FROM `001_leads` c
WHERE c.`lead_received` BETWEEN '2017-01-01' AND '2017-04-01'
UNION
SELECT
'CityD' as `city`,
d.*
FROM `001_leads` d
WHERE d.`lead_received` BETWEEN '2017-01-01' AND '2017-04-01'
UNION
SELECT
'CityE' as `city`,
e.*
FROM `001_leads` e
WHERE e.`lead_received` BETWEEN '2017-01-01' AND '2017-04-01'
) as `all`
ORDER BY all.`lead_received`,all.`city`;
如果这是一个将在未来不同时间段进行的查询,我建议使用联合创建一个视图,然后对该视图执行 select。
我正在使用 Amazon Quick Sight 从 MySQL 数据库中提取数据,为我的雇主生成视觉数据。我是一名学生,有一点 SQL 经验,但以前从未处理过这么大的数据库。
我需要从中获取的表是 001_leads 到 024_leads。这些表都是以相同的方式设计的。
这是我目前一直在做的无济于事。 Quick Sight 不会返回很好的错误警报,所以我一直在研究不同的解决方案。
SELECT 001_leads.lead_received AS "City-A Leads Q1",
002_leads.lead_received AS "City-B Leads Q1"
FROM 001_leads, 002_leads
WHERE lead_received BETWEEN '2017-01-01' AND '2017-04-01'
我很确定我需要使用联接,但我不知道如何联接 24 个不同的表。
理想情况下,当此查询运行时,它将显示来自每个城市的每条线索。
感谢观看:)
编辑:
我认为 Union 是您所追求的...不完全确定,您问题的措辞。
例如
SELECT 001_leads.lead_received AS Leads
FROM 001_leads
WHERE lead_received BETWEEN '2017-01-01' AND '2017-04-01'
UNION
SELECT 002_leads.lead_received
FROM 002_leads
WHERE lead_received BETWEEN '2017-01-01' AND '2017-04-01'
更新
以下内容应该按照您所说的那样进行。
SELECT l1.lead_received AS LeadsCityA, l2.lead_received AS LeadsCityA, l3.lead_received AS LeadsCityA, l4.lead_received AS LeadsCityA
FROM 001_leads l1
LEFT JOIN 002_leads l2
ON lead_received BETWEEN '2017-01-01' AND '2017-04-01'
LEFT JOIN 003_leads l3
ON lead_received BETWEEN '2017-01-01' AND '2017-04-01'
LEFT JOIN 004_leads l4
ON lead_received BETWEEN '2017-01-01' AND '2017-04-01'
WHERE lead_received BETWEEN '2017-01-01' AND '2017-04-01'
除非你真的需要一个枢轴table,否则我建议使用联合并为每个潜在客户获取一行,就像@Darby 建议的那样:
SELECT *
FROM (
SELECT
'CityA' as `city`,
a.*
FROM `001_leads` a
WHERE a.`lead_received` BETWEEN '2017-01-01' AND '2017-04-01'
UNION
SELECT
'CityB' as `city`,
b.*
FROM `001_leads` b
WHERE b.`lead_received` BETWEEN '2017-01-01' AND '2017-04-01'
UNION
SELECT
'CityC' as `city`,
c.*
FROM `001_leads` c
WHERE c.`lead_received` BETWEEN '2017-01-01' AND '2017-04-01'
UNION
SELECT
'CityD' as `city`,
d.*
FROM `001_leads` d
WHERE d.`lead_received` BETWEEN '2017-01-01' AND '2017-04-01'
UNION
SELECT
'CityE' as `city`,
e.*
FROM `001_leads` e
WHERE e.`lead_received` BETWEEN '2017-01-01' AND '2017-04-01'
) as `all`
ORDER BY all.`lead_received`,all.`city`;
如果这是一个将在未来不同时间段进行的查询,我建议使用联合创建一个视图,然后对该视图执行 select。