顯示包含詞語發現,發現者,發現,發現和發現摘要中的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