Sql 如何计算联接表中每行中出现的值?
我正在使用sql developer和oracle 11g为酒店系统创建一个数据库,我需要打印名字、姓氏、电子邮件以及每个人(电子邮件)访问酒店的次数。因此,我需要计算在预订表中出现电子邮件的次数 我有两个表要连接:Sql 如何计算联接表中每行中出现的值?,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我正在使用sql developer和oracle 11g为酒店系统创建一个数据库,我需要打印名字、姓氏、电子邮件以及每个人(电子邮件)访问酒店的次数。因此,我需要计算在预订表中出现电子邮件的次数 我有两个表要连接: 客户: 名字姓氏电话地址城镇电子邮件邮政编码 预订: 日期房间居住者到达时间夜间付费电子邮件 我希望显示名、姓、电子邮件、计数(电子邮件) 我如何才能做到这一点?这将是一对多关系: SELECT first_name, last_name, customer.email
- 客户:
名字
姓氏
电话
地址
城镇
电子邮件
邮政编码
- 预订:
日期
房间
居住者
到达时间
夜间
付费
电子邮件
我希望显示名、姓、电子邮件、计数(电子邮件)
我如何才能做到这一点?这将是一对多关系:
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_
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
;
同:
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
*/
选择客户的名字、姓氏、计数(b.email)c加入预订b on c.email=b.email按名字、姓氏分组这些表如何相互关联?这是eamil的
列吗?您可能需要一个CustomerId
,而在另一个表中需要一个外键。这些表与每个thr.电子邮件的关系如何?您尝试了什么?为什么访问次数在功能上取决于客户的电子邮件栏?这就像通过计算我的朋友在m地址簿中的次数来计算我与朋友交谈的次数。