需要SQL查询
我有两张桌子如下需要SQL查询,sql,sql-server-2008,Sql,Sql Server 2008,我有两张桌子如下 companyid name 1 pwc 2 dell 3 microsoft 4 google 5 yahoo 6 twitter companyid state month powerconsumption 1 newyork jan 240 2
companyid name
1 pwc
2 dell
3 microsoft
4 google
5 yahoo
6 twitter
companyid state month powerconsumption
1 newyork jan 240
2 california jan 130
3 arizona jan 210
4 texas jan 130
5 texas jan 650
6 california jan 310
2 arizona jan 340
我想有一个查询,以列出在每个国家的公司消耗最大功率在一月。因此,在上述数据的情况下,结果将是
arizona dell 340
california twitter 310
newyork pwc 240
texas yahoo 650
选择不同的“从公司中选择名称”,其中“公司ID=从消费中选择前1名公司ID”,其中“状态=a.state”和“月份=a.month ORDER BY powerconsumpion DESC AS company”, 状态 月 从消耗中选择前1位功耗作为消耗,其中状态=a.state,月份=a.month ORDER BY powerconsumpion DESC作为功耗 从dbo.consumption AS a尝试以下查询:
SELECT x.State,
c.Name AS CompanyName,
x.PowerConsumption
FROM
(
SELECT pc.CompanyID, pc.State, pc.PowerConsumption,
DENSE_RANK() OVER(PARTITION BY pc.State ORDER BY pc.PowerConsumption DESC) AS Rnk
FROM dbo.PowerConsumptionTable pc
WHERE pc.Month = 'jan'
) x INNER JOIN dbo.CompanyTable c ON x.CompanyID = c.CompanyID
WHERE x.Rnk = 1
我得到了一个答案,这似乎是对我最好的办法。它有一个子查询,但我看不出有什么办法可以避免 选择t2.state、t1.name、t2.powerconsumption 来自表1 t1 加入表2 t2 关于t1.companyid=t2.companyid 其中t2.powerconsumpion=从表2中选择MAXt3.powerconsumpion,其中t3.state=t2.state和t3.month='jan'
展示您的最佳尝试,并告诉我们您遇到了什么问题。我正在学习sql,但不知道如何解决此问题。它不是重复的。数据是相同的,但问题是不同的。我不想把两个问题混在一起,所以问了一个新问题。亚利桑那州有3个和2个都有。这是错别字吗?不是错别字。德克萨斯州和加利福尼亚州也有不止一家公司