我正在尝试使用group by来获取一份列出每日总销售额的报告。所以期望的输出看起来像这样:
2014年1月14日星期二$ 600
2014年1月14日星期二$ 600
等
当我使用以下代码时:
SELECT
tix.user_id,
tix.timestamp,
tix.event_id,
tixp.Price AS "Total Sales"
FROM LS_tickets tix
LEFT OUTER JOIN LS_ticket_prices tixP
ON tixP.event_ID = tix.event_ID
WHERE
tix.event_id = 12181
查询返回一个表但白天没有提供TOTALS。它提供每个单独的销售。所以我尝试按如下方式修改它:
SELECT
tix.user_id,
tix.timestamp,
tix.event_id,
sum(tixp.Price AS "Total Sales")
FROM LS_tickets tix
LEFT OUTER JOIN LS_ticket_prices tixP
ON tixP.event_ID = tix.event_ID
WHERE
tix.event_id = 12181
GROUP BY tix.timestamp
我收到以下错误:
无法解析查询,请检查查询的语法。 (ORA-00936:表达式缺失)
答案 0 :(得分:2)
如果您想要按天计算总数,那么您需要按天分组。假设timestamp
是日期数据类型:
SELECT trunc(tix.timestamp) as thedate,
sum(tixp.Price) AS "Total Sales"
FROM LS_tickets tix LEFT OUTER JOIN
LS_ticket_prices tixP
ON tixP.event_ID = tix.event_ID
WHERE tix.event_id = 12181
GROUP BY trunc(tix.timestamp)
ORDER BY 1;
您可以使用to_char()
获取所需的特定日期格式。此格式可能适合您:
SELECT to_char(tix.timestamp, 'DY MM DD, YYYY') as thedate,
sum(tixp.Price) AS "Total Sales"
FROM LS_tickets tix LEFT OUTER JOIN
LS_ticket_prices tixP
ON tixP.event_ID = tix.event_ID
WHERE tix.event_id = 12181
GROUP BY to_char(tix.timestamp, 'DY MM DD, YYYY')
ORDER BY 1;