在我的CENSUS表中,我想按国家分组,并且每个州都要获得县中位数和县数。
在psql,redshift和snowflake中,我可以这样做:
percentile_cont
我试图在标准的BigQuery中找到一种很好的方法。我注意到那里有无证的SELECT
state,
COUNT(county),
PERCENTILE_CONT(population2000,
0.5) OVER () AS `medPop`
FROM
CENSUS
GROUP BY
state;
分析功能,但我必须做一些重大的黑客才能让它做我想做的事。
我希望能够用我所收集到的正确论点做同样的事情:
SELECT list expression references column population2000 which is neither grouped nor aggregated at
但此查询会产生错误
SELECT
MAX(nCounties) AS nCounties,
state,
MAX(medPop) AS medPop
FROM (
SELECT
nCounties,
T1.state,
(PERCENTILE_CONT(population2000,
0.5) OVER (PARTITION BY T1.state)) AS `medPop`
FROM
census T1
LEFT OUTER JOIN (
SELECT
COUNT(county) AS `nCounties`,
state
FROM
census
GROUP BY
state) T2
ON
T1.state = T2.state) T3
GROUP BY
state
我可以得到我想要的答案,但如果这是我想做的事情的推荐方式,我会非常失望:
PERCENTILE_CONT
有没有更好的方法来做我想做的事情?此外,from django.db import models
from django.contrib.auth.models import User
from datetime import date
# Create your models here.
class UserProfileInfo(models.Model):
user = models.OneToOneField(User)
portfolio_site = models.URLField(blank=True)
profile_pic = models.ImageField(upload_to='profile_pics',blank='True')
def __str__(self):
return self.user.username
class UserPosts(models.Model):
post_title = models.CharField(max_length=100,unique=True)
post_sub_title = models.CharField(max_length=250,unique=False)
post_author = models.ForeignKey('User',User.username)
post_date = models.DateField(default=date.today,blank=True)
post_body = models.TextField(max_length=1000,unique=False)
def __str__(self):
return str(self.post_title)
函数是否会被记录?
感谢阅读!
答案 0 :(得分:10)
感谢您的关注。 PERCENTILE_CONT正在开发中,一旦它成为GA,我们将发布文档。我们将首先支持它作为分析函数,并且我们计划稍后将其作为聚合函数(允许GROUP BY)支持它。在这两个版本之间,一个更简单的解决方法是
SELECT
state,
ANY_VALUE(nCounties) AS nCounties,
ANY_VALUE(medPop) AS medPop
FROM (
SELECT
state,
COUNT(county) OVER (PARTITION BY state) AS nCounties,
PERCENTILE_CONT(population2000,
0.5) OVER (PARTITION BY state) AS medPop
FROM
CENSUS)
GROUP BY
state