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

4 に答える 4

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;
于 2012-04-05T02:57:21.597 に答える
4

使用しているSQLデータベースエンジンによって異なります。SELECTの直後にTOP1を使用するものもあれば、ORDERBY句の後にLIMIT1を使用するものもあります。

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

于 2012-04-05T03:01:56.763 に答える
3

なぜMAXcrash_yearがあるのか​​わからない。それを除く。したがって、問題は次のとおりです。

クラッシュ率が最大の年を見つけますか?

MySQLとPostgreSQLの場合:

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

SQLServerの場合:

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

DB2の場合:

SELECT crash_year
FROM nyccrash 
GROUP BY crash_year 
ORDER BY COUNT(crash_year) DESC
FETCH FIRST 1 ROWS ONLY
于 2012-04-05T03:15:09.463 に答える
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

LIMIT 1とトップ1を見ただけです。SQLのフレーバーをタグとして追加した場合は、より具体的になる可能性があります。

于 2012-04-05T02:57:03.990 に答える