[英]SQL Query involving aggregate functions
我在編寫此查詢時遇到問題。 我不知道我是否應該實際使用計數,因為這將返回實際計數,並且我想返回尚未進行審核的人員。 無論如何,這是我要寫的查詢。
Find those users that haven’t reviewed any businesses.
我正在使用的表是
reviews;
+-------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------+------+-----+---------+-------+
| business_id | int(11) | NO | PRI | NULL | |
| user_id | int(11) | NO | PRI | NULL | |
| review_id | int(11) | NO | PRI | NULL | |
| review_date | date | YES | | NULL | |
| star_rating | int(1) | YES | | 1 |
businesses
+--------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| business_id | int(11) | NO | PRI | NULL | |
| name | varchar(50) | YES | | NULL | |
| city | varchar(40) | YES | | NULL | |
| state | varchar(20) | YES | | NULL | |
| full_address | varchar(120) | YES | | NULL | |
users;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| user_id | int(11) | NO | PRI | NULL | |
| name | varchar(50) | YES | | NULL | |
| user_since | date | YES | | NULL
這是我到目前為止的
SELECT reviews.user_id FROM reviews
JOIN businesses ON (reviews.business_id = businesses.business_id)
GROUP BY reviews.user_id ASC
HAVING COUNT(*) > 0;
這將返回0個結果,我認為這是不對的,因為某人可以成為用戶,而不是撰寫評論。 但是我不知道還能做什么。 謝謝
編輯:我想通了最后一個查詢,但現在我試圖完成此查詢!
Find the users that have reviewed every business.
您希望用戶表而不是業務表。
通過將評論表加入用戶表,我們是說-讓我成為所有用戶,如果他們還沒有留下評論,則將這些列留為NULL。 然后在where子句中,我們僅選擇評論列為空的那些結果,從而選擇未留下評論的用戶。
select u.User_ID
from
users u
left join reviews r
on r.user_id = u.user_id
where r.review_id is null
SELECT u.*
FROM users u
WHERE NOT EXISTS ( SELECT 'a'
FROM reviews r
WHERE r.user_id = u.user_id
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.