[英]How do I count the occurences of the values in each row of a joined table?
I am creating a database for a hotel system using sql developer and oracle 11g and I need to print the first_name, last_name, email and how many times each person (email) visited the hotel. 我正在使用sql developer和oracle 11g为酒店系统创建数据库,我需要打印first_name,last_name,email和每个人(电子邮件)访问酒店的次数。 I therefore need to count how many times email occurs in the booking table.
因此,我需要计算预订表中出现电子邮件的次数。
I have 2 tables to join: 我有2张桌子要加入:
first_name
last_name
phone
address
town
email
postcode
first_name
last_name
phone
address
town
email
postcode
Date_
room
occupants
arrival_time
nights
paid
email_
Date_
room
occupants
arrival_time
nights
paid
email_
I wish to display first_name, last_name, email, COUNT(email)
我希望显示
first_name, last_name, email, COUNT(email)
How can I do this? 我怎样才能做到这一点?
SELECT first_name, last_name, customer.email, visits
FROM customer
JOIN (SELECT email_, COUNT(*) AS visits
FROM bookings
GROUP BY email_) v
ON customer.email = v.email_
It will be one to many relation: 这将是一对多的关系:
SELECT c.first_name, c.last_name, c.email, COUNT(c.email)
FROM customer c
JOIN booking b
ON c.email = b.email_
GROUP BY
c.first_name, c.last_name, c.email
;
The same as: 与:
SELECT x.col, count(x.col)
FROM
(
SELECT 1 col FROM DUAL UNION ALL
SELECT 2 FROM DUAL
) x
JOIN
(
SELECT 1 col FROM DUAL UNION ALL
SELECT 1 FROM DUAL UNION ALL
SELECT 2 FROM DUAL UNION ALL
SELECT 2 FROM DUAL UNION ALL
SELECT 2 FROM DUAL UNION ALL
SELECT 3 FROM DUAL
) y
ON x.col = y.col
GROUP BY
x.col
;
/*
1 2
2 3
*/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.