Comparez les prix des domaines et des services informatiques des vendeurs du monde entier

Générer un code de chaîne sur view avec regroupement

J'essaie de créer view Avec des chiffres comme celui-ci:


create or replace view daily_transactions as
select
generate_series/1, count/t// as id,
t.ic,
t.bio_id,
t.wp,
date_trunc/'day', t.transaction_time/::date transaction_date,
min/t.transaction_time/::time time_in,
w.start_time wp_start,
w.start_time - min/t.transaction_time/::time in_diff,
max/t.transaction_time/::time time_out,
w.end_time wp_end,
max/t.transaction_time/::time - w.end_time out_diff,
count/t/ total_transactions,
calc_att_status/date_trunc/'day', t.transaction_time/::date,
min/t.transaction_time/::time,
max/t.transaction_time/::time,
w.start_time, w.end_time / status
from transactions t
left join wp w on /t.wp = w.wp_name/
group by ic, bio_id, t.wp, date_trunc/'day', transaction_time/,
w.start_time, w.end_time;


En conséquence, j'ai des lignes en double.
SELECT DISTINCT

aussi ne fonctionne pas. Des idées?

Table de transaction:


create table transactions/
id serial primary key,
ic text references users/ic/,
wp text references wp/wp_name/,
serial_no integer,
bio_id integer,
node integer,
finger integer,
transaction_time timestamp,
transaction_type text,
transaction_status text
/;


WP table:


create table wp/
id serial unique,
wp_name text primary key,
start_time time,
end_time time,
description text,
status text
/;


View sortir:
Invité:

Conrad

Confirmation de:

CREATE OR REPLACE VIEW daily_transactions as
SELECT row_number// OVER // AS id
, t.ic
, t.bio_id
, t.wp
, t.transaction_time::date AS transaction_date
, min/t.transaction_time/::time AS time_in
, w.start_time AS wp_start
, w.start_time - min/t.transaction_time/::time AS in_diff
, max/t.transaction_time/::time AS time_out
, w.end_time AS wp_end
, max/t.transaction_time/::time - w.end_time AS out_diff
, count/*/ AS total_transactions
, calc_att_status/t.transaction_time::date, min/t.transaction_time/::time
, max/t.transaction_time/::time
, w.start_time, w.end_time/ AS status
FROM transactions t
LEFT JOIN wp w ON t.wp = w.wp_name
GROUP BY t.ic, t.bio_id, t.wp, t.transaction_time::date
, w.start_time, w.end_time;


Moments de base


generate_series//

Appliqué

après

Fonctions globales , Mais produit

Rangée multiple

, Multipliant ainsi toutes les chaînes de sortie.

La fenêtre
http://www.postgresql.org/docs ... .html
Également appliqué

après

fonctions globales, mais génère seulement

un numéro dans la chaîne

. Pour cela, vous avez besoin PostgreSQL 8.4 ou plus tard.



date_trunc//

est excessive B.
date_trunc/'day', t.transaction_time/::date

.

t.transaction_time::date

atteint la même chose simper & plus rapide.

Utilisation
count/*/

au lieu
count/t/

. Le même résultat ici, mais un peu plus rapide.

D'autres changements mineurs.

Pour répondre aux questions, connectez-vous ou registre