我有一个看起来很像这样的表:
我正在尝试查找哪些案例是重复的-意味着,哪些案例 具有相同的组,参数1,参数2,参数3 我尝试使用笛卡尔积,但是我不知道这些情况是否具有相同的行数(因为在where子句中,我只接受相等的行,例如:
where a.group=b.group
and a.parameter1=b.parameter1
and a.parameter2=b.parameter2
and a.parameter3=b.parameter3
and a.case!=b.case
),以及是否全部相同。
有人在从事类似的工作并且可能对此有解决方案吗?
答案 0 :(得分:0)
您可以尝试使用exists
select t1.* from table_name t1
where exists ( select 1 from table_name t2 where t1.parameter1=t2.parameter1
and t1.parameter2=t2.parameter2
and t1.parameter3=t2.parameter3
having count(*)>1
)
答案 1 :(得分:0)
我不确定这是否是最简单的方法,但对我有用 您运行查询以查找要与之比较的数据,并在第一个查询中执行第二个查询以获取结果...
<?php
//Retrieves data from MySQL for First Time
$data_p = mysql_query("SELECT * FROM TABLE") or die(mysql_error());
//Puts it into an array
while($info = mysql_fetch_array( $data_p ))
{
$parameter1_bs=$info['parameter1'];
$parameter2_bs=$info['parameter2'];
$parameter3_bs=$info['parameter3'];
//Retrieves data from MySQL to compare with the previous result
$data_po = mysql_query("SELECT * FROM TABLE WHERE $parameter1_bs=parameter1 AND $parameter2_bs=parameter2 AND $parameter3_bs=parameter3") or die(mysql_error());
$row = mysql_num_rows($data_po); // $row will count how many results
//Puts it into an array
while($info = mysql_fetch_array( $data_pp ))
{
$case=$info['case'];
echo $case;
echo "<br>";
}}
?>
答案 2 :(得分:0)
使用窗口功能!
select t.*
from (select t.*,
count(*) over (partition by Group, parameter1, parameter2, parameter3) as cnt
from t
) t
where cnt > 1
order by Group, parameter1, parameter2, parameter3;
您可以通过简单的汇总获得重复的键值:
select Group, parameter1, parameter2, parameter3, count(*)
from t
group by Group, parameter1, parameter2, parameter3
having count(*) > 1;
答案 3 :(得分:0)
这可能使我的前任所写的内容更加清楚或混乱。
是SQL。 Vertica是支持ANSI 2003标准的数据库之一,该数据库具有“基于窗口的”功能,也称为OLAP功能。那就是在函数调用之后添加OVER()子句的代码。就像戈登在上面说的那样-该查询实际上有效-我只是将您输入的数据插入第一个Common Table Expression-初始WITH子句的第一个条目列表。
在这里:
print("Payroll Calculator")
EmployeesName = input("Please enter employees Name or 0 to quit:")
WeeklyHours = int(input("Please Enter Hours Worked:"))
PayRate = int(input("Please Enter Pay Rate:"))
print("Normal Pay Rate is:", 40 * PayRate)
if(WeeklyHours > 40):
Overtime = PayRate * 1.5
if(WeeklyHours > 40):
print("Your Overtime Hours are:", WeeklyHours - 40)
print("Your Overtime Rate is:", Overtime * 1.5)
GrossPay = WeeklyHours * Overtime
print("Your Gross Pay is:", WeeklyHours * Overtime)
而且:从这里开始,您可以按'occ_count'进行过滤,确定最大的 按occ_count或您最终需要的顺序排序的重复项数。