显示包含词语发现,发现者,发现,发现和发现摘要中的20个奖项的标题和奖励数量。使用SQL查找独特价值
我的查询:
SELECT title, count(award), abstract
FROM poop
ORDER BY award
WHERE abstract LIKE discov%
LIMIT 20
它不喜欢我的where子句...有人吗? (在mySQL中)
显示包含词语发现,发现者,发现,发现和发现摘要中的20个奖项的标题和奖励数量。使用SQL查找独特价值
我的查询:
SELECT title, count(award), abstract
FROM poop
ORDER BY award
WHERE abstract LIKE discov%
LIMIT 20
它不喜欢我的where子句...有人吗? (在mySQL中)
此查询假设每个pi有不同的奖励。
SELECT COUNT(distinct award), pi
FROM [tablename]
GROUP BY pi
ORDER BY COUNT(distinct award) DESC
拥有最多奖项的州。
SELECT TOP 20 COUNT(distinct award), state
FROM [tablename]
GROUP BY state
ORDER BY COUNT(distinct award)
如果您不使用T-SQL,请删除TOP 20。
第二个sql命令在mysql中不起作用... – Jshee 2011-04-04 22:48:29
@woopie:你没有提到你正在使用哪个RDBMS。注意答案中的警告?删除'TOP 20'并使用'LIMIT 0,20' – 2011-04-04 22:56:57
你缺少在你的标准的单引号,你只是在寻找一个与“discov”,你的ORDER BY子句是在错误的地方开始话,您使用的是COUNT()表达不进行分组由其他非集合领域。为了解决这个问题并查找包含“discov”字样,使用此:
SELECT title, abstract, count(award),
FROM table
WHERE abstract
LIKE '%discov%'
GROUP BY title, abstract
ORDER BY count(award)
LIMIT 20
如果你真的没有意思只是看开头“discov”的话,那么用这个:
SELECT title, abstract, count(award),
FROM table
WHERE abstract
LIKE 'discov%'
GROUP BY title, abstract
ORDER BY count(award)
LIMIT 20
失踪'和ORDER BY
和WHERE
被反转:
SELECT title, count(award) AS count_award, abstract
FROM table
WHERE abstract LIKE 'discov%'
GROUP BY title, abstract
ORDER BY count_award DESC
LIMIT 20
我们要求学术诚信,用'homework'标记它。如果这不适用于您,道歉,请忽略评论。 – RichardTheKiwi 2011-04-04 23:10:04
我没有看到'抽象'列... – bdares 2011-04-05 01:34:12