0

私のデータベースでは、state=NY で postcode=12405 のテーブルの最後の 50 人を簡単に見ることができ、テーブルの下を見て、彼らが犬を飼っているかどうかを確認できます。

    SELECT state, postcode, havedog
    FROM address
    WHERE (state=NY) AND (postcode=12405)
    ORDER BY surname DESC
    LIMIT 0 , 5

どちらが返されますか

state   postcode    havedog
NY  12405   yes
NY  12405   yes
NY  12405   no
NY  12405   no
NY  12405   yes

データベース全体で、state=NY、postcode=12405 の犬を飼っている人の数も数えることができます。

    SELECT state, postcode COUNT(havedog) AS DOG
    FROM address
    WHERE (state=NY AND postcode=12405 ) AND (havedog=yes)

しかし、カウントを制限する方法がわからないので、state=NY、postcode=12405、havedog=yes の最後の 5 レコードのみをカウントします。Count 関数に制限を適用することは可能ですか?

たとえば、上記の表を考えると、カウントの結果は 3 になるはずです。

4

3 に答える 3

1

サブセレクトを使用します。

SELECT COUNT(*) FROM
(
    SELECT state, postcode, havedog
    FROM address
    WHERE state = 'NY' AND postcode = 12405
    ORDER BY surname DESC
    LIMIT 5
) T1
WHERE havedog = 1
于 2012-12-02T07:47:37.330 に答える
0

あなたはこれを行うことができます:

SELECT
  state,
  postcode
  COUNT(havedog) AS DogCounts
FROM
(
  SELECT state, postcode, havedog
  FROM address
  WHERE (state=NY) AND (postcode=12405)
  ORDER BY surname DESC
  LIMIT 50
) t
GROUP BY state, postcode
于 2012-12-02T07:47:48.373 に答える
0
SELECT top 50 state, postcode, COUNT(havedog) OVER () AS DOG
FROM address 
WHERE (state='NY' AND postcode=12405 ) AND (havedog='yes')
于 2012-12-02T07:49:41.927 に答える