Sadece bir datetime alana sahip olduğunda nasıl ay ve yıl ben grup yapmak?

4 Cevap php

Ben aslında bir datetime alanı ile işlem bilgi bir demet bir tablo şema var

TRANSACTION (< transactionid >, amount, when)

Ben SUM (miktar) olan işlemlerin bir aylık toplam, üretmek gerekiyor, ama ne ben grup yapmak tarafından kelimler. SQL Her satır aylık toplam içeren (9 Ocak, 9 Şubat .... Ocak 2010 için çok bir satır ve benzeri) gerekmektedir. Ben koduna göre tablo oluşturmak zorunda olabileceğini düşünüyorum, ama bunu kullanarak SQL çözmek için bir yol olup olmadığını öğrenmek istiyorum.

Herhangi bir yardım mutluluk duyacağız! (MySQL 5.3, PHP5 kullanarak)

4 Cevap

Sen özleri göre gruplandırmak gerekir.

SELECT 
    SUM(amount)
FROM 
    transaction
GROUP BY 
    EXTRACT(MONTH FROM when),
    EXTRACT(YEAR FROM when)

Ve sonra, bu sütunları gerekiyorsa

SELECT
    EXTRACT(MONTH FROM when) as month, 
    EXTRACT(YEAR FROM when) as year, 
    SUM(amount)
FROM 
    transaction
GROUP BY 
    month,
    year

Tabii ki ORDER BY append ve çok kısa adları kullanmak:

SELECT 
    EXTRACT(MONTH FROM when) as month, 
    EXTRACT(YEAR FROM when) as year, 
    SUM(amount)
FROM 
    transaction
GROUP BY 
    month, 
    year
ORDER BY 
    year DESC, 
    month DESC

Ben her zaman benim için bir Hack gibi biraz görünüyor ...) (AY () ve YILINI kullandım, ama çalışıyor ...

SELECT SUM(amount) FROM yourTable GROUP BY MONTH(date), YEAR(date)

Ya da tersi oldu? thinks

Aynasız

Ben böyle bir şey denemek istiyorum:

SELECT
  YEAR(when) AS year,
  MONTH(when) AS month,
  SUM(amount) AS amount
FROM
  TRANSACTION
GROUP BY
  YEAR(when),
  MONTH(when)
ORDER BY
  YEAR(when),
  MONTH(when)

Bu MS SQL üzerinde çalışır ve çok MySQL üzerinde çalışması gerekir.

Ben seni istiyorum:

SELECT SUM(amount)
FROM yourTable
GROUP BY CONCAT(YEAR(date), '-', MONTH(date))