3

SQL クエリに問題があります。145 のサイト名のリストがあります。各サイトで特定の種が見つかります。各サイトで各種が見られた回数のカウントを作成しました. 各サイトで見られる最も一般的な 5 種を見つけたいと考えています。現在、私は持っています:

SELECT TOP 5 Count([bird point counts bound query].[Group size]) AS [CountOfGroup size], [bird point counts bound query].site, [bird point counts bound query].Species
FROM [bird point counts bound query]
GROUP BY [bird point counts bound query].site, [bird point counts bound query].Species
ORDER BY Count([bird point counts bound query].[Group size]) DESC;

これは、すべてのサイトから最も一般的に見つかった 5 つの種のみを返しています。明確にするために、各サイトと 145 のサイトからの上位 5 つの結果を使用すると、結果のテーブルには 725 のレコードが含まれるはずです。私は現在アクセスで作業しています。

SQL は私の強みではないので、どんな助けもありがたく思います。

4

1 に答える 1

0

私が解決できる限り、これはAccessの一時テーブルでのみ実行できます。

これらの線に沿って何か?

CREATE TABLE ##SiteSpecies (
  id            int IDENTITY (1,1),
  Site          <whatever>,
  Species       <whatever>,
  Observations  int
)

INSERT INTO ##SiteSpecies
SELECT   [bird point counts bound query].site, [bird point counts bound query].Species, Count([bird point counts bound query].[Group size])
FROM     [bird point counts bound query]
GROUP BY [bird point counts bound query].site, [bird point counts bound query].Species
ORDER BY [bird point counts bound query].site, [bird point counts bound query].Species, Count([bird point counts bound query].[Group size])

SELECT
  results.*
FROM
  ##SiteSpecies        AS results
INNER JOIN
(
  SELECT Site, MIN(id) AS FirstID FROM ##SiteSpecies GROUP BY Site
)
  AS SiteMarkers
    ON  results.Site  = SiteMarkers.Site
    AND results.id   <= SiteMarkers.FirstID + 4
于 2012-05-13T20:05:29.330 に答える