这个问题的SQL查询是什么?

时间:2011-05-25 04:47:05

标签: mysql sql

我有一个数据库表交易,用于存储用户与购买,出售和下订单相关的所有交易。

Table http://img691.imageshack.us/img691/1948/stackoverflow.jpg

我想编写一个SQL查询,其结果如下:
1.每个人所做的所有交易的数量 2.每种订单类型的交易计数
3.结果应从最大总数到最低总数分类 4.结果应该只获取前10个人信息(使用'limit 0,10')。

我想获取已经组织的数据,而不是获取原始数据并在PHP中进行操作

所以我想为这个问题编写一个优化查询,因为这个表包含数千行 请指导我

感谢...

1 个答案:

答案 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