mysql - 难点单/分组/计数
问题描述
我有 3 个简单的表,但我的查询很困难
卖家表:
seller_id | name
1 john
2 paul
5 fred
6 robert
etc ...
交易表(目前只有 3 个值):
trans_id | name
1 BUY
2 SELL
3 EXCHANGE
操作表:
seller_id | trans_id | datetime
2 1 ....
2 2 ....
6 1 ....
2 3 ....
6 1 ....
该表记录了所有卖家的交易和他们的时刻。
我想获得,在最后一天,或者在某个时间间隔内
- 卖家名称,区间内buy-transaction订单数按buy-transaction数
- 卖家名称,间隔内按编号买入或卖出交易的买入或卖出交易订单数
我已经尝试了很多事情,奇怪的事情 taht mysql 不喜欢,但我无法成功......谢谢!
解决方案
这是您第一次查询的解决方案,即“卖家名称,购买交易订单数量按间隔内的购买交易数量”:
SELECT
S.name,
COUNT(1) AS total
FROM operations O
JOIN sellers S on O.seller_id = S.seller_id
JOIN transactions T on O.trans_id = T.trans_id
WHERE O.datetime >= CURDATE() AND T.name = 'BUY'
GROUP BY S.name
ORDER BY total
显然,第二个查询几乎相同,where 子句只是略有变化,见以下内容:
SELECT
S.name,
COUNT(1) AS total
FROM operations O
JOIN sellers S on O.seller_id = S.seller_id
JOIN transactions T on O.trans_id = T.trans_id
WHERE O.datetime >= CURDATE()-1 AND T.name IN ('BUY','SELL')
GROUP BY S.name
ORDER BY total
老实说,您甚至可以删除与事务表的连接并在 where 子句中使用 O.trans_id 。
推荐阅读
- pandas - Pandas - 列中唯一字符串的列表
- python - 如何使用 selenium Python 定期重新登录?
- spartacus-storefront - 如何使用新的@spartacus/schematics@3.2 原理图?
- php - CSV 上的 PHP foreach 忽略第一个条目,但 print_r 显示该条目在那里
- python - 使用 Dask for 循环进行慢速并行运行
- javascript - 从当前日期开始倒计时 5 分钟
- oracle - ORA-06530 引用 PL/SQL 过程中未初始化的复合错误
- javascript - 根据键值组合数组项
- c# - C# 通过 Windows Runtime Api 连接到 WiFi 网络。LocalSystem 与 NetworkService
- javascript - ObjectionJS 关系关联多对多使用 withGraphFetched 返回空