15

http://sqlfiddle.com/#!2/6a6b1

スキームは上記のとおりです。私がやりたいのは、売上/月の合計として結果を取得することです...ユーザーは開始日と終了日を入力し、月と年のすべてを(PHPで)生成できます。それらの日付。たとえば、12か月間の「販売」の総数を知りたい場合、開始日と終了日で12の個別のクエリを実行できることはわかっていますが、結果が次のようになるクエリを1つだけ実行したいと思います。

Month     numofsale
January - 2  
Feb-1
March - 23
Apr - 10

等々...

または、月のない売上のリストを、PHPで生成された月の配列と組み合わせることができます...任意のアイデア...

sqlfiddle.comから貼り付けられた編集/スキーマとデータ:

CREATE TABLE IF NOT EXISTS `lead_activity2` (
  `lead_activity_id` int(11) NOT NULL AUTO_INCREMENT,
  `sp_id` int(11) NOT NULL,
  `act_date` datetime NOT NULL,
  `act_name` varchar(255) NOT NULL,
  PRIMARY KEY (`lead_activity_id`),
  KEY `act_date` (`act_date`),
  KEY `act_name` (`act_name`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1  ;

INSERT INTO `lead_activity2` (`lead_activity_id`, `sp_id`, `act_date`, `act_name`) VALUES
(1, 5, '2012-10-16 16:05:29', 'sale'),
(2, 5, '2012-10-16 16:05:29', 'search'),
(3, 5, '2012-10-16 16:05:29', 'sale'),
(4, 5, '2012-10-17 16:05:29', 'DNC'),
(5, 5, '2012-10-17 16:05:29', 'sale'),
(6, 5, '2012-09-16 16:05:30', 'SCB'),
(7, 5, '2012-09-16 16:05:30', 'sale'),
(8, 5, '2012-08-16 16:05:30', 'sale'),
(9, 5,'2012-08-16 16:05:30', 'sale'),
(10, 5, '2012-07-16 16:05:30', 'sale');
4

5 に答える 5

33
SELECT DATE_FORMAT(date, "%m-%Y") AS Month, SUM(numofsale)
FROM <table_name>
WHERE <where-cond>
GROUP BY DATE_FORMAT(date, "%m-%Y") 

あなたのフィドルデモでそれが私のために働くことを確認してください(whereテストのために句を削除してください)

SELECT DATE_FORMAT(act_date, "%m-%Y") AS Month, COUNT(*)
FROM lead_activity2
WHERE <where-cond-here> AND act_name='sale'
GROUP BY DATE_FORMAT(act_date, "%m-%Y") 

以下の結果を返します

MONTH   COUNT(*)
07-2012 1
08-2012 2
09-2012 1
10-2012 3
于 2012-10-31T07:04:38.150 に答える
2

以下のようにクエリを試すことができます

select  SUM(`SP_ID`) AS `Total` , DATE_FORMAT(act_date, "%M") AS Month, Month(`ACT_DATE`) AS `Month_number` from `lead_activity2`  WHERE `ACT_DATE` BETWEEN '2012-05-01' AND '2012-12-17' group by Month(`ACT_DATE`)

ここ2012-05-01に、2012-12-17フォームから入力された日付があります。データベースに存在する場合は、特定の月の売上の合計が返されます。

ありがとう

于 2012-10-31T07:16:39.747 に答える
1

このクエリを試してください-

SELECT
  MONTH(act_date) month, COUNT(*)
FROM
  lead_activity2
WHERE
  YEAR(act_date) = 2012 AND act_name = 'sale'
GROUP BY
  month

よろしければWHERE条件を確認してください- act_name = 'sale'

月の名前を出力する場合は、 MONTH()の代わりにMONTHNAME()関数を使用します。

于 2012-10-31T07:05:22.480 に答える
0
SELECT YEAR(act_date), MONTH(act_date), COUNT(*)

FROM lead_activity2

GROUP BY YEAR(act_date), MONTH(act_date)

月ごとのデータまたは列に基づくその他のデータを取得するには、GROUPBYを追加する必要があります。

GROUPBYに多くの列または計算値を追加できます。

「売上高」は行数を意味すると思います。

于 2012-10-31T07:06:06.377 に答える
0

場合によっては、月の名前をJan、Feb、Mar .... Decにすると、FusionChartのようなグラフが必要になることがあります。

SELECT DATE_FORMAT(date, "%M") AS Month, SUM(numofsale)
FROM <Table_name>
GROUP BY DATE_FORMAT(date, "%M")

結果はテーブル上で次のようになります

MONTH   COUNT(*)
Jul       1
Aug       2
SEP       1
OCT       3
于 2017-09-13T19:15:07.360 に答える