0

次の情報を含むテーブルがあります...

Id | orderNumber | orderDate | customerId

orderDateは MySQL の日時フィールドであり、現在の日付、月、年、および時刻がレコードの書き込み時にデータベースに挿入されます。

だから私の質問は、今週の特定の日の注文のリストをどのように引き出すかということです。私の目標は、google charts API を使用して、次のような「今週の売り上げ」のグラフを作成することです。

 var data = google.visualization.arrayToDataTable([
                      ['Day', 'Sales'],
                      ['Mon',  1],
                      ['Tue',  0],
                      ['Wed',  4],
                      ['Thurs',  3],
                      ['Fri',  0],
                    ]);
4

1 に答える 1

3

あなたが望むことを正確にしましょう:

SELECT
    WEEKDAY(`datetime_field`) AS `week_day`,
    COUNT(*) AS `sale_count`
FROM `orders`
WHERE YEARWEEK(`datetime_field`) = YEARWEEK(NOW())
GROUP BY `week_day`
ORDER BY `week_day` ASC;

week_dayこれは、 と を含む一連のレコードを返しますsale_count 詳細はこちら. NOW()現地の日時を使用する場合に使用するかUTC_TIMESTAMP()、GMT でプレイする場合に使用します。

データベース名やフィールド名がわからないことに注意してください。それらを埋める必要があります。

作業例:

CREATE TABLE `orders` (
  `OrderID` int(11) NOT NULL AUTO_INCREMENT,
  `OrderDate` datetime NOT NULL,
  `OrderValue` decimal(7,2) unsigned NOT NULL,
  PRIMARY KEY (`OrderID`)
);

INSERT INTO `orders` VALUES ('1', '2012-10-29 14:02:19', '100.00');
INSERT INTO `orders` VALUES ('2', '2012-10-30 14:02:19', '123.00');
INSERT INTO `orders` VALUES ('3', '2012-10-31 14:02:19', '103.00');
INSERT INTO `orders` VALUES ('4', '2012-11-01 14:02:19', '232.00');
INSERT INTO `orders` VALUES ('5', '2012-11-02 14:02:19', '321.00');
INSERT INTO `orders` VALUES ('6', '2012-11-03 14:02:19', '154.00');
INSERT INTO `orders` VALUES ('7', '2012-11-04 14:02:19', '112.00');
INSERT INTO `orders` VALUES ('8', '2012-10-29 14:02:19', '100.00');

SELECT
    WEEKDAY(`OrderDate`) AS `week_day`,
    COUNT(*) AS `sales_count`,
    SUM(`OrderValue`) AS `sales_value`
FROM `orders`
WHERE YEARWEEK(`OrderDate`) = YEARWEEK(NOW())
GROUP BY `week_day`
ORDER BY `week_day` ASC;

これはテーブルを作成するための SQL で、今週は 1 日あたり 1 つの注文を追加しますが、月曜日には 2 つの注文を追加します。そして、レポートを取得するためのクエリ。

AND HERE'S SQLFIDDLE.COM SAMPLE .

于 2012-10-29T02:26:28.547 に答える