gpt4 book ai didi

mysql - 如何合并来自同一个联接表的两个 sql 计数

转载 作者:行者123 更新时间:2023-11-29 02:47:15 25 4
gpt4 key购买 nike

又来了一个烦人的学生!今天我花了几个小时试图在单个表输出中组合(选择)2 个已经连接的 SQL 输出 + 原始表的 ID。最终导致了这个查询:

SELECT * FROM(
SELECT fd1.User_idUser,avg(fd1.caloryIntake)
AS 'workdays'
FROM fact_dailysnapshot fd1
INNER JOIN dim_day dd1 ON dd1.DATE_SK = fd1.DATE_SK
WHERE dd1.weekend_ind = 'N'
GROUP BY fd1.User_idUser
ORDER BY fd1.User_idUser) A,

(SELECT avg(fd1.caloryIntake) AS 'weekend'
FROM fact_dailysnapshot fd1
INNER
JOIN dim_day dd1 ON dd1.DATE_SK = fd1.DATE_SK
WHERE dd1.weekend_ind = 'Y'
GROUP BY fd1.User_idUser
ORDER BY fd1.User_idUser) B;

这转化为……
output

现在这是一个错误的结果,第二列为所有用户条目提供了几乎恒定的值。我认为这必须通过某种额外的连接来解决,但我真的没有想法了。提前致谢...!

最佳答案

您的 JOIN 缺少与 dUser_idUser 相关的 ON 子句。

但是,编写查询的最简单方法是使用条件聚合:

SELECT fd1.User_idUser,
avg(case when dd1.weekend_ind = 'N' then fd1.caloryIntake end) as weekday_avg,
avg(case when dd1.weekend_ind = 'Y' then fd1.caloryIntake end) as weekend_avg
FROM fact_dailysnapshot fd1 INNER JOIN
dim_day dd1
ON dd1.DATE_SK = fd1.DATE_SK
GROUP BY fd1.User_idUser
ORDER BY fd1.User_idUser;

这是一个查询而不是两个。

关于mysql - 如何合并来自同一个联接表的两个 sql 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40409540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com