英文:
Combine the results one SQL query to the results of another SQL query to make one table
问题
我正在使用SQL Server,我有一些单独工作的查询,但我想将它们合并到一个表中。
我尝试将第一个查询与第二个连接,但我不确定正确的语法。
第一个查询:
SELECT Store, ROUND(AVG(Unemployment),2) AS 平均失业率,
ROUND(AVG(CPI),2) AS 平均CPI,
ROUND(AVG(Temperature),2) AS 平均温度
FROM PortfolioProjects..features
GROUP BY Store
ORDER BY Store
第二个查询:
SELECT tra.Store, sto.Type, sto.Size,
ROUND(SUM(CASE WHEN IsHoliday = 1 OR IsHoliday = 0
THEN Weekly_Sales
END),2) AS 总销售额,
ROUND(SUM(CASE WHEN IsHoliday = 1
THEN Weekly_Sales
END),2) AS 假日销售额,
ROUND(SUM(CASE WHEN IsHoliday = 0
THEN Weekly_Sales
END),2) AS 非假日销售额
FROM PortfolioProjects..train tra, PortfolioProjects..stores sto
WHERE tra.Store = sto.Store
GROUP BY tra.Store, sto.Size, sto.Type
请注意,这只是查询的中文翻译部分,没有其他内容。
英文:
I'm using SQL Server and I have a couple of queries that work individually, but I would like to combine them together into one table.
I've tried to take the first query and join it with the 2nd, but I'm not sure of the right syntax.
SELECT Store, ROUND(AVG(Unemployment),2) AS avg_unempl,
ROUND(AVG(CPI),2) AS avg_CPI,
ROUND(AVG(Temperature),2) AS avg_temp
FROM PortfolioProjects..features
GROUP BY Store
ORDER BY Store
Store avg_unempl avg_CPI avg_temp
1 7.44 217.27 66.91
2 7.4 216.92 66.73
3 7.01 220.69 70.39
4 5.65 129.2 61.42
5 6.16 217.84 68.22
6 6.41 218.84 68.5
SELECT tra.Store, sto.Type, sto.Size,
ROUND(SUM(CASE WHEN IsHoliday = 1 OR IsHoliday = 0
THEN Weekly_Sales
END),2) AS tot_sales,
ROUND(SUM(CASE WHEN IsHoliday = 1
THEN Weekly_Sales
END),2) AS hol_sales,
ROUND(SUM(CASE WHEN IsHoliday = 0
THEN Weekly_Sales
END),2) AS non_hol_sales
FROM PortfolioProjects..train tra, PortfolioProjects..stores sto
WHERE tra.Store = sto.Store
GROUP BY tra.Store, sto.Size, sto.Type
Store Type Size tot_sales hol_sales non_hol_sales
1 A 151315 222402808.85 16657476.56 205745332.29
2 A 202307 275382440.98 20792669 254589771.98
3 B 37392 57586735.07 4378110.5 53208624.57
4 A 205863 299543953.38 22431026.24 277112927.14
5 B 34875 45475688.9 3595016.07 41880672.83
6 A 202505 223756130.64 16809079.27 206947051.37
答案1
得分: 1
将第一个查询的分组结果加入,并将这些列添加到 GROUP BY
中。您可以选择先对这两个查询进行分组,然后再进行连接,因为两者实质上只按独特的 Store
进行分组。
英文:
Just join the grouped results of the first query, and then add those columns to the GROUP BY
. You could alternatively group up both queries first and join themm afterwards, as both are essentially grouped only by unique Store
.
SELECT
sto.Store,
sto.Type,
sto.Size,
ROUND(SUM(CASE WHEN IsHoliday = 1 OR IsHoliday = 0
THEN Weekly_Sales
END), 2) AS tot_sales,
ROUND(SUM(CASE WHEN IsHoliday = 1
THEN Weekly_Sales
END), 2) AS hol_sales,
ROUND(SUM(CASE WHEN IsHoliday = 0
THEN Weekly_Sales
END), 2) AS non_hol_sales,
f.avg_unempl,
f.avg_CPI,
f.avg_temp
FROM train tra
JOIN stores sto ON tra.Store = sto.Store
JOIN (
SELECT
f.Store,
ROUND(AVG(f.Unemployment), 2) AS avg_unempl,
ROUND(AVG(f.CPI), 2) AS avg_CPI,
ROUND(AVG(f.Temperature), 2) AS avg_temp
FROM features f
GROUP BY f.Store
) f ON f.Store = sto.Store
GROUP BY
sto.Store,
sto.Size,
sto.Type,
f.avg_unempl,
f.avg_CPI,
f.avg_temp;
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论