Mysql n 01/04/17来自票务表)-800美元(这两张票的总销售额是指来自行项目表:{line\u item.count*line\u item.quantity}这有意义吗?编辑我的答案以包含总销售额。结果将返回一个哈希数组。您可以在视图中包含该数组以显示

Mysql n 01/04/17来自票务表)-800美元(这两张票的总销售额是指来自行项目表:{line\u item.count*line\u item.quantity}这有意义吗?编辑我的答案以包含总销售额。结果将返回一个哈希数组。您可以在视图中包含该数组以显示,mysql,ruby-on-rails,postgresql,ruby-on-rails-4,Mysql,Ruby On Rails,Postgresql,Ruby On Rails 4,n 01/04/17来自票务表)-800美元(这两张票的总销售额是指来自行项目表:{line\u item.count*line\u item.quantity}这有意义吗?编辑我的答案以包含总销售额。结果将返回一个哈希数组。您可以在视图中包含该数组以显示表格数据。如果您能告诉用户更多的选择,那就太好了。我假设用户有像上周=>天数=7,上月=>天数=30,过去2个月=>天数=60,去年=>天数=365等等。此外,您的代码会给我一些错误,如:语法错误,意外的“:”,应为关键字“结束日期:Date.


n 01/04/17来自票务表)-800美元(这两张票的总销售额是指来自行项目表:{line\u item.count*line\u item.quantity}这有意义吗?编辑我的答案以包含总销售额。结果将返回一个哈希数组。您可以在视图中包含该数组以显示表格数据。如果您能告诉用户更多的选择,那就太好了。我假设用户有像
上周=>天数=7
上月=>天数=30
过去2个月=>天数=60
去年=>天数=365
等等。此外,您的代码会给我一些错误,如:
语法错误,意外的“:”,应为关键字“结束日期:Date.today-day”\u from\u now.days,^(irb):54:语法错误,意外“,”,应为关键字\u end day:Date.today-day\u from\u now.days,
请原谅语法错误。我已更新了我的答案。这应该会提供一些有意义的内容。由于循环返回哈希(键值对),我在循环中添加了大括号每天。我只返回天数和项目计数。我不确定您屏幕截图中的第三列。第二列是该特定日期的门票计数。从我的屏幕截图中可以看出:
01/04/17-2(2017年04月01日的门票来自票务表)-$800(这两张门票的总销售额来自行项目表:{line_item.count*line_item.quantity}
这有意义吗?编辑我的答案以包含总销售额。结果将返回一个哈希数组。您可以将其包含在视图中以显示表格数据。
----------------------
id | date     | count
----------------------
1  | 01/04/17 |  0    // 0 because this dates does not have any tickets.
2  | 02/04/17 |  0    // 0 because this dates does not have any tickets.
3  | 03/04/17 |  0    // 0 because this dates does not have any tickets.
4  | 04/04/17 |  0    // 0 because this dates does not have any tickets.
5  | 05/04/17 |  0    // 0 because this dates does not have any tickets.
6  | 06/04/17 |  0    // 0 because this dates does not have any tickets.
7  | 07/04/17 |  0    // 0 because this dates does not have any tickets.
8  | 08/04/17 |  0    // 0 because this dates does not have any tickets.
Ticket.includes(:line_items).where('tickets.created_at > ? AND 
tickets.created_at < ?', Date.today.last_month.beginning_of_month, 
Date.today.beginning_of_month).where.not(line_items: {id: nil}).count
SELECT COUNT(DISTINCT "tickets"."id") FROM "tickets" LEFT OUTER JOIN 
"line_items" ON "line_items"."ticket_id" = "tickets"."id" WHERE 
(tickets.created_at > '2017-04-01' AND tickets.created_at < '2017-05-01') AND 
("line_items"."id" IS NOT NULL)
data = Ticket.includes(:line_items).where('tickets.created_at > ? AND tickets.created_at < ?', Time.now.beginning_of_day - (no_of_days).days , Time.now.beginning_of_day).where.not(line_items: {id: nil}) #retrieves all data in a single query

(0..no_of_days).map do |day_from_now|
  todays_data = data.select{|item| item.created_at < (Time.now.beginning_of_day - (day_from_now).days) && item.created_at > (Time.now.beginning_of_day - (day_from_now - 1).days)}
 return { "day": (Date.today - day_from_now.days).strftime("%A %d-%m"), 
  "ticket_count": todays_data.size, 
  "total_sales": todays_data.inject(0){|sum, item| sum + item.line_item.quantity * item.line_item.rate }
end
DECLARE @MinDate DATE = '20170401',
        @MaxDate DATE = '20170430';
SELECT t.Id, d.[Date], COALESCE(t.[Count],0) AS [Count]
FROM (
SELECT  TOP (DATEDIFF(DAY, @MinDate, @MaxDate) + 1)
        Date = DATEADD(DAY, ROW_NUMBER() OVER(ORDER BY a.object_id) - 1, @MinDate)
FROM    sys.all_objects a
        CROSS JOIN sys.all_objects b
) d
LEFT JOIN yourTbl AS t ON d.Date = t.Date
SELECT dat::date, count(DISTINCT tic."id")
  FROM generate_series('2017-04-01'::date, '2017-04-30'::date, interval '1 day') AS dat
  LEFT JOIN (SELECT "tickets"."id", "tickets"."created_at"
               FROM "tickets"
               JOIN "line_items"
                 ON "line_items"."ticket_id" = "tickets"."id") tic
  ON tic."created_at" = dat::date
 GROUP BY dat
 ORDER BY dat
SELECT dat::date, count(DISTINCT "tickets"."id")
  FROM generate_series('2017-04-01'::date, '2017-04-30'::date, interval '1 day') AS dat
  LEFT JOIN "tickets" ON "tickets"."created_at" = dat::date
                     AND EXISTS(SELECT 1 FROM "line_items"
                                 WHERE "line_items"."ticket_id" = "tickets"."id" LIMIT 1)
 GROUP BY dat
 ORDER BY dat