日期:2014-05-20  浏览次数:20525 次

请教mysql问题
CREATE TABLE ab(
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  aid INT,
  num INT
) ;

INSERT INTO ab VALUES(1, 1, 10);
INSERT INTO ab VALUES(2, 2, 12);
INSERT INTO ab VALUES(3, 3, 1);
INSERT INTO ab VALUES(4, 1, 12);
INSERT INTO ab VALUES(5, 2, 13);
INSERT INTO ab VALUES(6, 3, 14);
INSERT INTO ab VALUES(7, 4, 20);
INSERT INTO ab VALUES(8, 1, 1);
INSERT INTO ab VALUES(9, 2, 2);
INSERT INTO ab VALUES(10, 3, 18);
INSERT INTO ab VALUES(11, 5, 12);
INSERT INTO ab VALUES(12, 2, 13);

SELECT SUM(NUM) FROM AB A WHERE NOT EXISTS(SELECT 1 FROM AB WHERE (A.AID=AID AND A.NUM<NUM)
OR (A.`aid`=AID AND A.`num`=NUM AND A.`id`<ID))
可以得到不同用户最大数量之和,同时避免重复数量的多次统计,如果在表中再加一个字段,如时间,现在需要统计某个时间段的值,该hql如何编写????

------解决方案--------------------
HQL的不会,顶下。
------解决方案--------------------
加distinct关键字过滤相同的内容.

------解决方案--------------------
查询2011年间的
select aid,max(num) from ab where dd < '2011-12-31' and dd>'2011-1-1' group by aid;