尝试选择一个表,其中包含一个列,其中客户每天订购的饮料总量由odate和饮料编号计算。例如。克劳德在2020年共点了10杯饮料-1-12
drinker | odate | total_drinks
Claude | 2020-01-12 | 10
Claude | 2020-01-15 | 3
如何压缩当前的语句?
发布于 2020-06-04 10:54:24
不清楚。
drink_no
意味着什么?
你不应该试图保持一个人在一天中喝了多少饮料的“跑步计数”。相反,只需存储他们已经消费了另一种饮料,然后让您的查询进行“加起来”:
select
drinker
, odate
, count( odate ) total
from table1
group by drinker, odate
order by drinker, odate ;
+---------+------------+-------+
| drinker | odate | total |
+---------+------------+-------+
| Claude | 2020-01-12 | 4 |
| Claude | 2020-01-15 | 2 |
| Claude | 2020-01-19 | 1 |
| Claude | 2020-04-04 | 1 |
| Claude | 2020-04-05 | 1 |
| Claude | 2020-04-12 | 1 |
| Claude | 2020-04-15 | 1 |
| Claude | 2020-04-16 | 1 |
| Claude | 2020-04-17 | 1 |
| Claude | 2020-04-18 | 1 |
| Claude | 2020-04-19 | 1 |
| Claude | 2020-04-20 | 1 |
+---------+------------+-------+
另外,请告诉我,odate是一个实际的日期数据类型。
不要将日期值存储在其他任何东西中。这样做将使日期操作变得更加困难,而且可能会慢得多。
https://dba.stackexchange.com/questions/268478
复制相似问题