---
title: "En SQL-fråga för att få ut hur många böcker jag köpt under året"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/184151-en-sql-fråga-för-att-få-ut-hur-många-böcker-jag-köpt-under-året"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "jme"
published: "2010-07-21T08:55:58.000Z"
updated: "2010-07-21T14:51:07.000Z"
replies: 6
views: 567
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/184151-en-sql-fråga-för-att-få-ut-hur-många-böcker-jag-köpt-under-året"
---

# En SQL-fråga för att få ut hur många böcker jag köpt under året

## #1 — jme, 2010-07-21T08:55Z

Hej.

Jag håller på att skapa en liten graf över hur många böcker jag har köpt under året, månadsvis. Grafen skall visa data för 6 månader åt gången (2 bakåt och 3 framåt).

Tabellen i fråga heter book och har bl a följande kolumner:

\- id
\- title
\- author
\- created_at (datumet jag har lagt in boken i registret och kan ses som köpsdatum)

Just nu har jag kommit fram till följande SQL-fråga:

```php
	SELECT
		(SELECT count(*) FROM book WHERE created_at BETWEEN '2010-05-01 00:00:00' AND '2010-05-31 23:59:59'),
		(SELECT count(*) FROM book WHERE created_at BETWEEN '2010-06-01 00:00:00' AND '2010-06-30 23:59:59'),
		(SELECT count(*) FROM book WHERE created_at BETWEEN '2010-07-01 00:00:00' AND  '2010-07-31 23:59:59')
	FROM
		book 
	WHERE
		created_at > '0000-00-00'
	LIMIT
		1
```

Ovan stående fråga hämtar alltså data för tre månader.

WHERE-satsen måste jag ha då jag har lagt till created_at i senare stund och då får vissa rader i tabellen värdet '000-00-00 ...' som jag inte vill få med i resultatet.

Denna fråga verkar fungera men jag skulle gärna vilja förbättra den då just nu behövs LIMIT 1. Jag är inte helt säker på att min fråga är optimal.

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

## #2 — @nders, 2010-07-21T09:01Z

Ser inte helt optimalt, och inte helt dynamiskt ut.  :)

Jag hade gjort något sånt härnt:

```
    SELECT count(*), MONTH(created_at), YEAR(created_at)
    FROM
        book 
    WHERE
        created_at > '0000-00-00'
    GROUP BY MONTH(created_at), YEAR(created_at)
```

EDIT: Vill du få resultatet lite sexigare kan du använda MONTHNAME() istället för MONTH().

mvh

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

## #3 — jme, 2010-07-21T09:07Z

Ser MYCKET bättre ut, tack. Kan man bygga ut frågan och få den att hämta data för endast vald range? T ex 

a) 

bara för Juni, Juli och Augusti i år

b) 

December (2010, Januari (2011) och Februari)?

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

## #4 — Jesper T, 2010-07-21T09:13Z

A

```
SELECT count(*), MONTH(created_at), YEAR(created_at)
    FROM
        book 
    WHERE
        created_at BETWEEN '2010-06-01' AND '2010-08-31'
    GROUP BY MONTH(created_at), YEAR(created_at)
```

B

```
SELECT count(*), MONTH(created_at), YEAR(created_at)
    FROM
        book 
    WHERE
        created_at BETWEEN '2010-12-01' AND '2011-02-28'
    GROUP BY MONTH(created_at), YEAR(created_at)
```

...kanske.

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

## #5 — jme, 2010-07-21T09:16Z

Jamensåklart! :r

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

## #6 — Lasp, 2010-07-21T14:29Z

Hur kan du veta vilka böcker du köpt om tre (3) månader! om Inköpsdatum är regdatum? ;-)

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

## #7 — jme, 2010-07-21T14:51Z

Bra fråga. :D

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/184151-en-sql-fråga-för-att-få-ut-hur-många-böcker-jag-köpt-under-året
