Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要SQL查询_Sql_Sql Server 2008 - Fatal编程技术网

需要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个都有。这是错别字吗?不是错别字。德克萨斯州和加利福尼亚州也有不止一家公司