我創建了兩個視圖來幫助計算user_diary_number,然後選擇其中用戶的日記數>總用戶user_diary_number的平均值。mysql有...> avg()無法按預期方式工作
兩種觀點都象下面這樣:
create view user_diary_number as
(
select user_id,count(distinct diary_id) as diary_num
from user_diary
group by user_id
);
和第二使用having
和avg
:
create view hw_diary as
(
select u.user_id, u.realname, ud.diary_num, school.school_name
from (user as u cross join user_diary_number as ud on u.user_id = ud.user_id)cross join school on u.school_id = school.school_id
having diary_num > avg(diary_num)
);
問題是現在有什麼,第二視圖只有1行的結果。絕對地,我們有超過1個用戶的日記號> average diary_num。事實上,我共有251個日誌和103個用戶。一些用戶有9,4,5個日記。 但結果只有在有3個日記的用戶中才有。
我的親戚表是:
CREATE TABLE IF NOT EXISTS `school` (
`school_id` int(11) NOT NULL,
`school_name` varchar(45) NOT NULL,
`location` varchar(45) NOT NULL,
`master` varchar(45) NOT NULL,
`numbers_of_student` int(11) NOT NULL,
PRIMARY KEY (`school_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `user_diary` (
`diary_id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`title` varchar(45) NOT NULL,
`content` varchar(255) NOT NULL,
`addtime` DATETIME NOT NULL,
PRIMARY KEY (`diary_id`,`user_id`),
KEY `fk_diary_user_id_idx` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
是否與交叉連接的任何問題?或者是其他東西? 非常感謝!
謝謝:)我修好了。 –