【发布时间】:2018-06-08 07:11:47
【问题描述】:
我试图通过下面提到的查询从销售数据中获取每年每个月的销售美元总和、销售数量、平均销售价格、市场天数中位数和销售价格中位数:
SELECT CAST(MNTH AS VARCHAR(2)) +'-'+ CAST(YR AS VARCHAR(4)) AS 'MONTH-YEAR', YR, MNTH,
MAX(dol_vol) AS 'Dol. Vol.',
MAX(no_sales) AS '# of Sales',
MAX(avg_price) AS 'Average Price',
MAX(med_price) AS 'Median Price',
MAX(med_days) AS 'Median Days'
FROM (SELECT YEAR(dt) YR, MONTH(dt) MNTH,
SUM(sale_price) dol_vol,
COUNT(sale_price) no_sales,
AVG(sale_price) avg_price,
PERCENTILE_CONT(.50) WITHIN GROUP (ORDER BY sale_price) OVER (PARTITION BY year(dt), month(dt)) med_price,
PERCENTILE_CONT(.50) WITHIN GROUP (ORDER BY days_mkt) OVER (PARTITION BY year(dt), month(dt)) med_days
FROM Sales_Data
WHERE status='sld' AND year(dt)>='2000' AND sale_price>1000) d
GROUP BY YR, MNTH
ORDER BY YR, MNTH;
但是,我收到以下错误:
Msg 8120, Level 16, State 1, Line 7
Column 'Sales_Data.dt' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
现在,如果我尝试在子查询中为“dt”列添加 GROUP BY 条件,那么对于 sale_price 和 days_mkt 列也会出现相同的错误。我如何获得资源
【问题讨论】:
标签: sql-server tsql window-functions