---
title: "Vill gruppera och räkna antalet?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/191171-vill-gruppera-och-räkna-antalet"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "UrMe"
published: "2013-02-20T11:47:16.000Z"
updated: "2013-02-20T12:41:59.000Z"
replies: 4
views: 681
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/191171-vill-gruppera-och-räkna-antalet"
---

# Vill gruppera och räkna antalet?

## #1 — UrMe, 2013-02-20T11:47Z

Jag har en SQL fråga så här:

```php
SELECT document_id FROM `statistics` WHERE download_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 day) AND CURDATE() GROUP BY document_id, user_ip
```

Jag grupperar så dokument_id + user_ip blir unikt. 

Nu visar denna SQL fråga t.ex
16
16
16
19
19
21
25
25
25

Men jag skulle vilja ha ut denna SQL fråga så här:
ID \| Antal
16 \| 3
19 \| 2
21 \| 1
25 \| 3

Har försökt med olika varianter av subqueries osv men får aldrig ut korrekt antal. Någon som har en idé?

Permalänk: https://www.webforum.nu/p/191171

## #2 — voigtann1, 2013-02-20T12:00Z

Nu var det ett tag sen jag skrev SQL men:

```
SELECT document_id as ID, Count(document_id) as Antal FROM `statistics` WHERE download_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 day) AND CURDATE() GROUP BY document_id, user_ip
```

 är väl så man få den struktur du vill ha? Eller något i den stilen?

Permalänk: https://www.webforum.nu/p/2307963

## #3 — UrMe, 2013-02-20T12:12Z

Det har jag provat men den räknar ju varje id+user_ip som 1, eftersom den är grupperad där efter.

Så här blir resultatet t.ex:

```php
Array
(
    [0] => Array
        (
            [document_id] => 16
            [0] => 16
            [antal] => 1
            [1] => 1
        )

    [1] => Array
        (
            [document_id] => 16
            [0] => 16
            [antal] => 1
            [1] => 1
        )

    [2] => Array
        (
            [document_id] => 16
            [0] => 16
            [antal] => 1
            [1] => 1
        )

    [3] => Array
        (
            [document_id] => 16
            [0] => 16
            [antal] => 1
            [1] => 1
        )

    [4] => Array
        (
            [document_id] => 16
            [0] => 16
            [antal] => 1
            [1] => 1
        )

    [5] => Array
        (
            [document_id] => 16
            [0] => 16
            [antal] => 1
            [1] => 1
        )

    [6] => Array
        (
            [document_id] => 16
            [0] => 16
            [antal] => 1
            [1] => 1
        )

    [7] => Array
        (
            [document_id] => 16
            [0] => 16
            [antal] => 1
            [1] => 1
        )

    [8] => Array
        (
            [document_id] => 17
            [0] => 17
            [antal] => 1
            [1] => 1
        )

...
...
...
```

Permalänk: https://www.webforum.nu/p/2307964

## #4 — @nders, 2013-02-20T12:25Z

Kanske kan detta lira?

```
SELECT document_id as ID, count(distinct user_ip) as antal
FROM `statistics` 
WHERE download_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 day) AND CURDATE() 
GROUP BY document_id
```

mvh

Permalänk: https://www.webforum.nu/p/2307965

## #5 — UrMe, 2013-02-20T12:41Z

Kanon! Det där verkar fungera! :)

Permalänk: https://www.webforum.nu/p/2307966

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/191171-vill-gruppera-och-räkna-antalet
