我有一个数据库表交易,用于存储用户与购买,出售和下订单相关的所有交易。
Table http://img691.imageshack.us/img691/1948/stackoverflow.jpg
我想编写一个SQL查询,其结果如下:
1.每个人所做的所有交易的数量
2.每种订单类型的交易计数
3.结果应从最大总数到最低总数分类
4.结果应该只获取前10个人信息(使用'limit 0,10')。
我想获取已经组织的数据,而不是获取原始数据并在PHP中进行操作
所以我想为这个问题编写一个优化查询,因为这个表包含数千行 请指导我
感谢...
答案 0 :(得分:2)
尝试类似:
SELECT p_id, COUNT(1) AS Total, SUM(CASE WHEN order_type = 'purchased' THEN 1 ELSE 0 END) AS PurchaseCount, SUM(CASE WHEN order_type = 'placed order' THEN 1 ELSE 0 END) AS PlacedOrderCount, SUM(CASE WHEN order_type = 'sold' THEN 1 ELSE 0 END) AS SoldCount
FROM transaction
GROUP BY p_id
ORDER BY Total DESC
LIMIT 0, 10
在回复您的后续评论时,我相信这会得到您的追随 (如果计数限制根据您的需要设置为截止值)
SELECT p_id, item_name, COUNT(item_name) as ItemCount
FROM transaction
GROUP BY p_id, item_name
HAVING COUNT(item_name) > 100