2012-04-05 9 views
1
SELECT MAX(crash_year) AS crash_year, COUNT(crash_year) AS COUNT 
FROM nyccrash 
GROUP BY crash_year 
ORDER BY COUNT(crash_year) DESC; 

このステートメントは、20年間にわたって範囲全体を返します。しかし、一番上の行をどのように取得すればよいですか?最大のクラッシュレートを持つ年を見つけますか?

+------------+-------+ 
| crash_year | count | 
+------------+-------+ 
|  1999 | 862 | 
|  1990 | 847 | 
|  1992 | 812 | 
|  1991 | 810 | 
|  1993 | 806 | 
|  2000 | 803 | 
|  1994 | 782 | 
|  1989 | 763 | 
|  2001 | 729 | 
|  1995 | 698 | 
|  1997 | 672 | 
|  1996 | 671 | 
|  1998 | 665 | 
|  2002 | 497 | 
|  2003 | 419 | 
|  2006 | 384 | 
|  2004 | 377 | 
|  2007 | 364 | 
|  2005 | 363 | 
+------------+-------+ 

答えて

4

ので、クエリの最後にLIMIT 1を追加します。

SELECT MAX(crash_year) AS crash_year, COUNT(crash_year) AS COUNT 
FROM nyccrash 
GROUP BY crash_year 
ORDER BY COUNT(crash_year) DESC 
LIMIT 1; 
+0

おかげで、LIMITの事を忘れてしまいました。 –

2
SELECT TOP 1 
    crash_year, COUNT 
FROM 
(
    SELECT MAX(crash_year) AS crash_year, COUNT(crash_year) AS COUNT 
    FROM nyccrash 
    GROUP BY crash_year 
    ORDER BY COUNT(crash_year) DESC; 
) AS T 

ちょうど私はあなたがタグとしてSQLのあなたの香りを追加した場合、我々はより具体的な可能性とし、トップ1対LIMIT 1を見ました。

4

は、使用しているSQLデータベースエンジンに依存します。 SELECTの直後にTOP 1を使用するものもあれば、ORDER BY句の後にLIMIT 1を使用するものもあります。

また、crash_yearの最初のインスタンスの周りにMAX()は必要ありません。

3

なぜクラッシュ_yearにMAXがあるのか​​わかりません。それを除く。したがって、質問は次のとおりです。

最高のクラッシュレートを持つ年を見つけますか?

のMySQLとPostgreSQLで

:SQLServerので

SELECT crash_year 
FROM nyccrash 
GROUP BY crash_year 
ORDER BY COUNT(crash_year) DESC 
LIMIT 1 

:DB2では

SELECT TOP 1 crash_year 
FROM nyccrash 
GROUP BY crash_year 
ORDER BY COUNT(crash_year) DESC 

SELECT crash_year 
FROM nyccrash 
GROUP BY crash_year 
ORDER BY COUNT(crash_year) DESC 
FETCH FIRST 1 ROWS ONLY 
関連する問題