2014-06-30 31 views
1

SQL查询:SQL查询找到收视率最高的

目的:

写SQL查询来获取收视率最高的Phills 咖啡在美国的地址格式的地址。

id name   house street   city   state zip country rating 
1 Best Buy  34 Main St  Carson   CA 98064 USA  9 
2 Phills Coffee 4568 Sepulveda Blvd Torrance   CA 50833 USA  6 
3 Starbucks  3 Ocean Blvd  Long Beach  WA 45093 USA  9 
4 Phills Coffee 214 Carson St  Huntington Beach PA 89435 USA  4 

美国地址格式(适用人群美国以外地区):

http://bitboost.com/ref/international-address-formats/united_states/ 

我尝试:

​​

难道我做错了吗?或者我该如何改进这个查询?

谢谢,

+0

我认为我们需要知道什么是“美国地址格式”。请记住,不是每个人都来自美国,也许和我一样,不知道它是怎么回事! –

+2

如果两个地点的评分最高,应该会发生什么?你想要回1或2记录吗? –

回答

1

美国地址的格式是这样的: 4568塞普尔韦达大道,Torrance,CA 50833 USA。

所以,你的选择会是这样的: SELECT CONCAT(房子, '',街道, '',市 '' 国家 '' 拉链 '',国家) FROM表 WHERE名=“菲斯咖啡” 按次分类DESC限制1

+0

如果任何参数为NULL,[CONCAT()](http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat)将返回NULL。如果这是用于邮寄的东西,它可能并不重要,但如果它显示'COALESCE'可能是一个好主意 –

1

您被要求检索地址和美国寻址格式。所以使用:

SELECT CONCAT(街道, ' ' '国家','')......

不知道什么是美国地址格式,而是使用CONCAT得到它完成。你的WHERE条件和ORDER BY都是OK

1

你将不得不使用最大(额定)作为最高等级和集团通过这一点,

SELECT house, street, city, 
     state,country,zip,Max(rating) 
FROM table 
Group By house, street, city, 
     state,country,zip 
Having name="Phills Coffee" 
ORDER BY rating DESC LIMIT 1; 

我希望它的作品了你,我很抱歉,如果我没有任何帮助..

1
SELECT house, street, city, state, country, zip, rating 
FROM table WHERE rating = (SELECT MAX(rating) 
    from table WHERE name = "Phills Coffee") 
AND name= "Phills Coffee"; 

这应返回:

4568塞普尔维达大道托兰斯CA 50833 USA 6

注意,您可以在此查询中的第一行省略评级,将返回地址(不使用6,但仍然会选择最高等级的信息)