关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
10个月前关门了。
改进这个问题
很抱歉,我的题目很复杂,我是sql新手,不知道怎么问得比这个更好。
基本上我有一个非常大的表,有很多列。我需要找到任何选定列的值的平均值,但前提是该行的id具有特定的日期。
例如,我编写了一个简单的查询来按日期查找列的平均值。。。
SELECT AVG(Col6), date
FROM Schema.Table
WHERE date = 2019
这将返回日期列中包含2019的所有日期的col6的平均值。
日期栏中有两年(2019年和2020年)。有些身份证没有2019年的数据,有些没有2020年的数据。
我想写一个查询,如果一个id有一个2020年的日期和一个2019年的日期,它基本上只给我col6的平均值,但是我不确定我该怎么做。
任何帮助都将不胜感激!
3条答案
按热度按时间ql3eal8s1#
ve7v8dk22#
为了检查日期是否存在于这两个年份中,可以使用内部联接,如下所示:
vcirk6k63#
你会用
GROUP BY date
或其他类似的分组,以分隔分组返回的行。可选WITH ROLLUP
包括总平均数。使用WHERE
限制平均数据。示例:db fiddle
替代品
BETWEEN
(检索范围),将使用IN()
只限制特定日期。数据
结果
不指定
GROUP BY
这个date
列值变得模棱两可,并且可以返回子集中的“任意值”,因此不应依赖。服务器可以自由地从每个组中选择任何值,因此除非它们相同,否则所选择的值是不确定的,这可能不是您想要的[碳化硅]
结果
注:2020年可能不会实际归还